func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     int N, K;     cin >> N >> K;     using arr2 = array<int, 2>;     vector<arr2> binTrie;     const int w = 30;     binTrie.push_back({-1, -1});     vector<int> sz(1, 0);     auto add = [&](int x) {       int v = 0;       for (int i = w - 1; i >= 0; --i) {         int b = (x >> i) & 1;         ++sz[v];         if (binTrie[v][b] >= 0) {           v = binTrie[v][b];           continue;         }         int v_ = binTrie.size();         binTrie[v][b] = v_;         binTrie.push_back({-1, -1});         sz.push_back(0);         v = v_;       }       ++sz[v];     };     auto xor_lower_bound_size = [&](int x, int k) {       int v = 0, ret = 0;       for (int i = w - 1; i >= 0; --i) {         int b = ((x ^ k) >> i) & 1;         int t = (k >> i) & 1;         if ((!t) and binTrie[v][b ^ 1] >= 0) ret += sz[binTrie[v][b ^ 1]];         if (binTrie[v][b] < 0) {           v = -1;           break;         }         v = binTrie[v][b];       }       if (v >= 0) ret += sz[v];       return ret;     };     vector<int> A(N + 1);     for (int i = 0; i < N; ++i) {       cin >> A[i + 1];       A[i + 1] ^= A[i];     }     long long ans = 0;     for (int i = 0; i <= N; ++i) {       ans += xor_lower_bound_size(A[i], K);       add(A[i]);     }     cout << ans << endl;   }   