//题意:求ai^aj=x 的(i,j)&&i<j个数
/两边同^ai -> aj=x^ai
枚举i用map统计aj=x^ai出现次数即可
//坑点ans爆int
1e5 x=3
1 2 1 2.......答案约等于1/2(1e5*1e5)
统计出来的i<j个数若为k,i<j和i>j的个数一一对应,则i>j个数也为k
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
using namespace std;
typedef long long ll;
const int N=1e5+20;
int used[N];
int a[N];
map<int,int> mk;
int main()
{
int n,x;
cin>>n>>x;
ll ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
mk[a[i]]++;
}
//题意:求ai^aj=x 的(i,j)&&i<j个数
//两边同^ai -> aj=x^ai
//枚举i用map统计aj=x^ai出现次数即可
for(int i=1;i<=n;i++)
{
//aj=a[i]^x
if(x==0)
ans+=mk[a[i]^x]-1;
else
ans+=mk[a[i]^x];
}
cout<<ans/2<<endl;
return 0;
}