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.*;
import java.math.*;

public class Main {
    
    // WRITE CODE HERE
    static void solve() throws IOException{ 
        int[] f = new int[1000000+10];
        int n = inp.nextInt();
        int x = inp.nextInt();
        long ans = 0;
        for(int i=1; i<=n; i++){
            int v = inp.nextInt();
            ans += f[x^v];
            f[v]++;
        }
        System.out.println(ans);
    }
    
    static Scanner inp;
    static InputReader in;
    static PrintWriter out;
        
    public static void main(String[] args) throws IOException {
        inp = new Scanner( System.in );
        in = new InputReader( System.in );
	out = new PrintWriter( System.out );
	solve();
        out.close();
    }

    static class InputReader {
	BufferedReader br;

	public InputReader(InputStream stream) {
		br = new BufferedReader(new InputStreamReader(stream));
	}

	public int nextInt() throws IOException {
		int c = br.read();
		while (c <= 32) {
			c = br.read();
		}
		boolean negative = false;
		if (c == '-') {
			negative = true;
			c = br.read();
		}
		int x = 0;
		while (c > 32) {
			x = x * 10 + c - '0';
			c = br.read();
		}
		return negative ? -x : x;
	}

	public long nextLong() throws IOException {
		int c = br.read();
		while (c <= 32) {
			c = br.read();
		}
		boolean negative = false;
		if (c == '-') {
			negative = true;
			c = br.read();
		}
		long x = 0;
		while (c > 32) {
			x = x * 10 + c - '0';
			c = br.read();
		}
		return negative ? -x : x;
	}

	public String next() throws IOException {
		int c = br.read();
		while (c <= 32) {
			c = br.read();
		}
		StringBuilder sb = new StringBuilder();
		while (c > 32) {
			sb.append((char) c);
			c = br.read();
		}
		return sb.toString();
	}

	public double nextDouble() throws IOException {
		return Double.parseDouble(next());
        }
    }
    
}