#include using namespace std; #define rep(i,n) for(int i = 0; i < (int)(n); i++) #define repr(i,n) for(int i = (int)(n); i >= 0; i--) #define all(v) v.begin(),v.end() typedef long long ll; int main(){ ll N,X; cin >> N >> X; vector vec(N); rep(i,N){ cin >> vec[i]; } sort(all(vec)); vector > count(0); count.push_back(pair (-1,1)); rep(i,N){ if (vec[i] != count[count.size() - 1].first){ count.push_back(pair (vec[i],1)); } else{ count[count.size() - 1].second++; } } ll len = count.size(); ll ans = 0; rep(i,N){ ll ans_sub = vec[i] ^ X; if (count[len - 1].first > ans_sub){ ans += 0; } else if (count[len - 1].first == ans_sub){ ans += count[len - 1].second; } else{ int left = 0; int right = len - 1; while(true){ if (right - left == 1){ if (count[left].first == ans_sub){ ans += count[left].second; } else{ ans += 0; } break; } else if (count[(left + right) / 2].first <= ans_sub){ left = (left + right) / 2; } else{ right = (left + right) / 2; } } } } ll special_ans = 0; if (X == 0){ rep(i,len){ special_ans += (count[i].second - 1) * (count[i].second) / 2; } cout << special_ans << endl; } else{ cout << ans << endl; } }