func_code_string: #include <bits/stdc++.h>   using namespace std;   struct TrieNode {     TrieNode *arr[2];     TrieNode() { arr[0] = arr[1] = nullptr; }   };   void insert(TrieNode *root, int num) {     TrieNode *curr = root;     for (int i = 20; i >= 0; i--) {       if (curr->arr[(num >> i) & 1] == nullptr)         curr->arr[(num >> i) & 1] = new TrieNode();       curr = curr->arr[(num >> i) & 1];     }     return;   }   int query(TrieNode *root, int xr) {     int ans = 0;     TrieNode *curr = root;     for (int i = 20; i >= 0; i--) {       if (curr->arr[(xr >> i) & 1] == nullptr) {         ans |= (1 << i);         curr = curr->arr[((xr >> i) & 1) ^ 1];       } else {         curr = curr->arr[(xr >> i) & 1];       }     }     return ans;   }   const int N = 1 << 20 + 1;   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     int n, m;     cin >> n >> m;     bool present[N];     memset(present, false, sizeof(present));     vector<int> a(n);     for (int &i : a) cin >> i, present[i] = true;     TrieNode *root = new TrieNode();     for (int i = 0; i < N; i++)       if (!present[i]) insert(root, i);     int curr_xor = 0;     while (m--) {       int x;       cin >> x;       curr_xor ^= x;       cout << query(root, curr_xor) <<   n ;     }     return 0;   }   