#include using namespace std; using ll = long long; using pii = pair; using pll = pair; #define rep(i, n) for(int i = 0; i < (n); i++) #define rep1(i, n) for(int i = 1; i < (n); i++) template istream& operator >> (istream& s, vector& v) { for (T& x: v) { s >> x; } return s;} template istream& operator >> (istream& s, pair& p) { s >> p.first >> p.second; return s;} int main() { int N, X; cin >> N >> X; map m; rep(i, N) { int A; cin >> A; m[A]++; } ll ans = 0; set done; for (const auto& p : m) { const int& A = p.first; const int& c = p.second; if (done.count(A) > 0) continue; int B = A^X; if (A == B) { ans += c * (c - 1) / 2; } else { if (m.count(B) > 0) { ans += c * m[B]; } } done.insert(A); done.insert(B); } cout << ans << endl; }