#include using namespace std; void maimun() { ios::sync_with_stdio(false); cin.tie(0); } int main() { #ifdef ONLINE_JUDGE freopen("note2.in", "r", stdin); freopen("note2.out", "w", stdout); #endif maimun(); long long n , m, ans = 0; cin >> n >> m; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } deque> dp; for (int i = 0; i < n; i++) { deque> ndp; ndp.push_back({a[i], 1}); for (const auto &p: dp) { long long nv = p.first & a[i]; if (!ndp.empty() && ndp.back().first == nv) { ndp.back().second += p.second; } else { ndp.push_back({nv, p.second}); } } for (const auto &p: ndp) { if (p.first >= m) { ans += p.second; } } swap(dp, ndp); } cout << ans << "\n"; }