#include<bits/stdc++.h>
using namespace std;
template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
using ll = long long;
const int N = 3e7+5; // 30 * N
int n, k;
int trie[N][2], cnt[N], nodes = 1;
void insert(int x) {
int u = 1;
for (int i = 29; i >= 0; i--) {
int b = (x >> i) & 1;
if (!trie[u][b]) trie[u][b] = ++nodes;
u = trie[u][b];
cnt[u]++;
}
}
ll query(int p, int k) {
int u = 1;
ll res = 0;
for (int i = 29; i >= 0; i--) {
if (!u) break;
int b_p = (p >> i) & 1, b_k = (k >> i) & 1;
if (b_k == 1) u = trie[u][b_p ^ 1];
else {
if (trie[u][b_p ^ 1]) res += cnt[trie[u][b_p ^ 1]];
u = trie[u][b_p];
}
}
if (u) res += cnt[u];
return res;
}
void solve() {
cin >> n >> k;
insert(0); // P_0 = 0
ll ans = 0;
int sum = 0;
for (int i = 0; i < n; i++) {
int x; cin >> x;
sum ^= x;
ans += query(sum, k);
insert(sum);
}
cout << ans << '\n';
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
#define TASK "BAI4"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CmJvb2wgY2htYXgoWCYgYSwgWSBiKSB7IHJldHVybiAoYSA8IGIpID8gYSA9IGIsIDEgOiAwOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgpib29sIGNobWluKFgmIGEsIFkgYikgeyByZXR1cm4gKGEgPiBiKSA/IGEgPSBiLCAxIDogMDsgfQoKdXNpbmcgbGwgPSBsb25nIGxvbmc7Cgpjb25zdCBpbnQgTiA9IDNlNys1OyAvLyAzMCAqIE4KCmludCBuLCBrOwoKaW50IHRyaWVbTl1bMl0sIGNudFtOXSwgbm9kZXMgPSAxOwoKdm9pZCBpbnNlcnQoaW50IHgpIHsKICAgIGludCB1ID0gMTsKICAgIGZvciAoaW50IGkgPSAyOTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICBpbnQgYiA9ICh4ID4+IGkpICYgMTsKICAgICAgICBpZiAoIXRyaWVbdV1bYl0pIHRyaWVbdV1bYl0gPSArK25vZGVzOwogICAgICAgIHUgPSB0cmllW3VdW2JdOwogICAgICAgIGNudFt1XSsrOwogICAgfQp9CgpsbCBxdWVyeShpbnQgcCwgaW50IGspIHsKICAgIGludCB1ID0gMTsKICAgIGxsIHJlcyA9IDA7CiAgICBmb3IgKGludCBpID0gMjk7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgaWYgKCF1KSBicmVhazsKICAgICAgICBpbnQgYl9wID0gKHAgPj4gaSkgJiAxLCBiX2sgPSAoayA+PiBpKSAmIDE7CiAgICAgICAgaWYgKGJfayA9PSAxKSB1ID0gdHJpZVt1XVtiX3AgXiAxXTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHRyaWVbdV1bYl9wIF4gMV0pIHJlcyArPSBjbnRbdHJpZVt1XVtiX3AgXiAxXV07CiAgICAgICAgICAgIHUgPSB0cmllW3VdW2JfcF07CiAgICAgICAgfQogICAgfQogICAgaWYgKHUpIHJlcyArPSBjbnRbdV07CiAgICByZXR1cm4gcmVzOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gazsKICAgIGluc2VydCgwKTsgLy8gUF8wID0gMAogICAgbGwgYW5zID0gMDsKICAgIGludCBzdW0gPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpbnQgeDsgY2luID4+IHg7CiAgICAgICAgc3VtIF49IHg7CiAgICAgICAgYW5zICs9IHF1ZXJ5KHN1bSwgayk7CiAgICAgICAgaW5zZXJ0KHN1bSk7CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwoKICAgICNkZWZpbmUgVEFTSyAiQkFJNCIKICAgIGlmIChmb3BlbihUQVNLIi5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBpbnQgdGVzdHMgPSAxOyAvLyBjaW4gPj4gdGVzdHM7CiAgICB3aGlsZSAodGVzdHMtLSkgc29sdmUoKTsKCiAgICAjaWZkZWYgTE9DQUwKICAgIGNlcnIgPDwgIlxuVGltZSBlbGFwc2VkOiAiIDw8IDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyA8PCAiIHMuXG4iOwogICAgI2VuZGlmCiAgICByZXR1cm4gMDsKfQ==