There are some beautiful girls in Arpa’s land as mentioned before.

Once Arpa came up with an obvious problem:

Given an array and a number x, count the number of pairs of indices i, j (1 ≤ i < j ≤ n) such that <image>, where <image> is bitwise xor operation (see notes for explanation).

<image>

Immediately, Mehrdad discovered a terrible solution that nobody trusted. Now Arpa needs your help to implement the solution to that problem.

Input

First line contains two integers n and x (1 ≤ n ≤ 105, 0 ≤ x ≤ 105) — the number of elements in the array and the integer x.

Second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105) — the elements of the array.

Output

Print a single integer: the answer to the problem.

Examples

Input

2 3
1 2


Output

1

Input

6 1
5 1 2 3 4 1


Output

2

Note

In the first sample there is only one pair of i = 1 and j = 2. <image> so the answer is 1.

In the second sample the only two pairs are i = 3, j = 4 (since <image>) and i = 1, j = 5 (since <image>).

A bitwise xor takes two bit integers of equal length and performs the logical xor operation on each pair of corresponding bits. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1. You can read more about bitwise xor operation here: <https://en.wikipedia.org/wiki/Bitwise_operation#XOR>.
import java.io.*;
import java.util.*;
public class Problem742B
{
   boolean DEBUG=false;
   PrintWriter pw;
   public static void main(String[] args) throws Exception
   {
      new Problem742B();
   }
   public Problem742B() throws Exception{
      main();
      pw.close();
   }   
   public void main() throws Exception{
      BufferedReader br;
      br = new BufferedReader(new InputStreamReader(System.in));
      pw = new PrintWriter(System.out);
      StringTokenizer st;
      st = getst(br);
      int n=nextInt(st);
		int x=nextInt(st);
		st = getst(br);
      int[] arr = new int[n];
		long ct=0;
		for(int k=0; k<n; k++)
			arr[k]=nextInt(st);
     	Arrays.sort(arr);
		HashMap<Integer, Long> h = new HashMap<Integer,Long>();
		for(int k:arr)
		{
			if(h.containsKey(k))
				h.put(k, h.get(k)+1);
			else h.put(k,(long)1);
		}
		//System.out.println(h);
		for(int k: h.keySet())
		{
			if(h.containsKey(k^x))
			{
				long a1 = h.get(k);
				long a2 = h.get(k^x);
				long a3 = a1*a2;
				if(x==0){
					a2--;
					a3=a1*a2;
				}
				ct+=a3;
			}
		}
		pw.println(ct/2);
      pw.close();
   }
   public static StringTokenizer getst(BufferedReader br) throws Exception{
      return new StringTokenizer(br.readLine(), " ");
   }
   public static int nextInt(StringTokenizer st) throws Exception{
      return Integer.parseInt(st.nextToken());
   }
   class Loc{
      public int location;
      public int spotInList;
      public int min;
      public int max;
      public Loc(int l, int s)
      {
         location=l;
         spotInList=s;
      }
      public String toString()
      {
         return location+"|"+spotInList+"|"+min+"|"+max;
      }
   }
}