A median in an array with the length of n is an element which occupies position number <image> after we sort the elements in the non-decreasing order (the array elements are numbered starting with 1). A median of an array (2, 6, 1, 2, 3) is the number 2, and a median of array (0, 96, 17, 23) — the number 17.

We define an expression <image> as the integer part of dividing number a by number b.

One day Vasya showed Petya an array consisting of n integers and suggested finding the array's median. Petya didn't even look at the array and said that it equals x. Petya is a very honest boy, so he decided to add several numbers to the given array so that the median of the resulting array would be equal to x.

Petya can add any integers from 1 to 105 to the array, including the same numbers. Of course, he can add nothing to the array. If a number is added multiple times, then we should consider it the number of times it occurs. It is not allowed to delete of change initial numbers of the array. 

While Petya is busy distracting Vasya, your task is to find the minimum number of elements he will need.

Input

The first input line contains two space-separated integers n and x (1 ≤ n ≤ 500, 1 ≤ x ≤ 105) — the initial array's length and the required median's value. The second line contains n space-separated numbers — the initial array. The elements of the array are integers from 1 to 105. The array elements are not necessarily different.

Output

Print the only integer — the minimum number of elements Petya needs to add to the array so that its median equals x.

Examples

Input

3 10
10 20 30


Output

1


Input

3 4
1 2 3


Output

4

Note

In the first sample we can add number 9 to array (10, 20, 30). The resulting array (9, 10, 20, 30) will have a median in position <image>, that is, 10.

In the second sample you should add numbers 4, 5, 5, 5. The resulting array has median equal to 4.
import java.io.*;
import java.util.*;

public class middle implements Runnable {
	public StringTokenizer strtok;
	public BufferedReader inr;
	public PrintWriter out;

	public static void main(String[] args) {
		new Thread(new middle()).start();
	}

	public static final String taskname = "middle";

	public void run() {
		Locale.setDefault(Locale.US);
		boolean oj = System.getProperty("ONLINE_JUDGE") != null;
		try {
			inr = new BufferedReader(oj ? new InputStreamReader(System.in, "ISO-8859-1") : new FileReader(taskname + ".in"));
			out = new PrintWriter(oj ? new OutputStreamWriter(System.out, "ISO-8859-1") : new FileWriter(taskname + ".out"));
			solve();
		} catch (Exception e) {
			if (!oj)
				e.printStackTrace();
			System.exit(9000);
		} finally {
			out.flush();
			out.close();
		}
	}

	public String nextToken() throws IOException {
		while (strtok == null || !strtok.hasMoreTokens()) {
			strtok = new StringTokenizer(inr.readLine());
		}
		return strtok.nextToken();
	}

	public int nextInt() throws NumberFormatException, IOException {
		return Integer.parseInt(nextToken());
	}

	public long nextLong() throws NumberFormatException, IOException {
		return Long.parseLong(nextToken());
	}

	public double nextDouble() throws NumberFormatException, IOException {
		return Double.parseDouble(nextToken());
	}

	// Debugging

	public static void printArray(boolean[][] a) {
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				System.out.print(a[i][j] ? '#' : '.');
			}
			System.out.print('\n');
		}
	}

	// Solution
	
	public static int lower_bound(ArrayList<Integer> list, int first, int last, int val) {
		int len = last - first;
		int half;
		int middle;
		while (len > 0) {
			half = len >>> 1;
			middle = first + half;
			if (list.get(middle) < val) {
				first = middle + 1;
				len = len - half - 1;
			} else
				len = half;
		}
		return first;
	}

	public static int upper_bound(ArrayList<Integer> list, int first, int last, int val) {
		int len = last - first;
		int half;
		int middle;
		while (len > 0) {
			half = len >>> 1;
			middle = first + half;
			if (val < list.get(middle))
				len = half;
			else {
				first = middle + 1;
				len = len - half - 1;
			}
		}
		return first;
	}

	public void solve() throws NumberFormatException, IOException {
		int n = nextInt();
		int x = nextInt();
		
		ArrayList<Integer> a = new ArrayList<Integer>(n);
		
		for (int i = 0; i < n; i++) {
			a.add(nextInt());
		}
		Collections.sort(a);
		
		int result = 0;
		int med_pos = (n - 1) / 2;
		int val = a.get(med_pos);
		while (val != x) {
			int low = lower_bound(a, 0, n, x);
			int high = upper_bound(a, 0, n, x);
			
			if (low > med_pos) {
				a.add(low, x);
			}
			else if (high <= med_pos) {
				a.add(high, x);
			}
			else {
				System.out.println(a);
				System.out.printf("%d, %d, %d\n", low, med_pos, high);
				throw new AssertionError();
			}
			
			med_pos = (a.size() - 1) / 2;
			val = a.get(med_pos);
			result++;
		}
		out.print(result);
	}
}