#include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { int n; cin >> n; unsigned k; cin >> k; vector a(n); for (auto& x : a) cin >> x; array last_pos; last_pos.fill(-1); int last_illegal = -1; ll ans = 0; for (int i = 0; i < n; ++i) { if (a[i] & ~k) { last_illegal = i; last_pos.fill(-1); } else { unsigned need = k & ~a[i]; unsigned mask = 1; int bit = 0; int minpos = i; while (mask) { if (need & mask) minpos = min(minpos, last_pos[bit]); mask <<= 1; ++bit; } if (minpos != -1) { ans += minpos - last_illegal; } mask = 1; bit = 0; while (mask) { if (a[i] & mask) last_pos[bit] = i; mask <<= 1; ++bit; } } } cout << ans << '\n'; }