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 Solution{  
	
	
	
 public static void main(String[] args) {
     
     Scanner in = new Scanner(System.in);
     
    int n,x,i,start,end,mid,current=-1,num=0;
    Integer[] a,b;
    long answer=0;
    
    n=Integer.parseInt(in.next());
    x=Integer.parseInt(in.next());
    
    
    a=new Integer[n+2];
    b=new Integer[n+1];
    a[0]=-1;
    a[n+1]=10000000;
    
    for(i=1;i<=n;i++){
    	a[i]=Integer.parseInt(in.next());
    	b[i]=a[i]^x;
    }
    
    Arrays.sort(a);
    
    if(x==0){
    	for(i=1;i<=n;i++){
    		if(a[i]==current)num++;
    		else{
    			answer+=(long)num*(num-1)/2;
    			num=1;
    			current=a[i];
    		}
    	}
    	
    	answer+=(long)num*(num-1)/2;
    	System.out.println(answer);
    	return;
    }
    
    for(i=1;i<=n;i++){
    	num=n;
    	int less,more;
    	
    	start=1;end=n;mid=(start+end)/2;
    	
    	while(!(a[mid]<b[i] && b[i]<=a[mid+1])){
    		if(a[mid]>=b[i]){
    			end=mid-1;
    		}
    		else{
    			start=mid+1;
    		}
    		mid=(start+end)/2;
    	}
    	less=mid;
    	
    	start=1;end=n;mid=(start+end)/2;
    	
    	while(!(a[mid]<=b[i] && b[i]<a[mid+1])){
    		if(a[mid]>b[i]){
    			end=mid-1;
    		}
    		else{
    			start=mid+1;
    		}
    		
    		mid=(start+end)/2;
    	}
    	
    	more=(n-mid);
    	
    	num-=(less+more);
    	
    	answer+=num;
    	
    	
    }
    
    System.out.println((answer/2));
 }
}
