#include using namespace std; using LL = long long; using ULL = unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) int N, X; ULL C[1 << 18][19] = {}; ULL ans[18] = {}; int main() { cin >> N >> X; rep(i, N) { int a; cin >> a; rep(j, 18) if (!(a & (1 << j))) C[a][j]++; C[a][18]++; } rep(d, 19) { int D = 1 << d; if (X & D) { int DX = (X - D) & ~(D - 1); if (DX != 0) { for (int i = 0; i < 1 << 18; i += D) { if (i > (i ^ DX)) continue; rep(j, 18) ans[j] += C[i][18] * C[i ^ DX][18] - C[i][j] * C[i ^ DX][j]; } } else { for (int i = 0; i < 1 << 18; i += D) { rep(j, 18) ans[j] += C[i][18] * (C[i][18] - 1) / 2 - C[i][j] * (C[i][j] - 1) / 2; } } } if (d != 18) { rep(i, 1 << 18) { if (i & D) continue; rep(j, 19) C[i][j] += C[i | D][j]; } } } ULL anssum = 0; rep(i, 18) anssum += ans[i] << i; cout << anssum << endl; return 0; }