func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e4 + 4;   long long int a[N][20], pre[N][20], ans;   struct node {     node *left, *right;     long long int cnt;     node() {       left = NULL;       right = NULL;       cnt = 0;     }   };   struct trie {     node *x;   };   void insert(node *t, long long int x) {     for (long long int i = 31; i >= 0; i--) {       if (x & (1 << i)) {         if (t->right == NULL) t->right = new node();         t = t->right;         t->cnt++;       } else {         if (t->left == NULL) t->left = new node();         t = t->left;         t->cnt++;       }     }   }   void del(node *t, long long int x) {     for (long long int i = 31; i >= 0; i--) {       if (x & (1 << i)) {         t = t->right;         t->cnt--;       } else {         t = t->left;         t->cnt--;       }     }   }   long long int query(node *t, long long int x) {     long long int ret = 0;     for (long long int i = 31; i >= 0; i--) {       if (x & (1 << i)) {         if (t->left && t->left->cnt != 0) {           ret |= (1 << i);           t = t->left;         } else           t = t->right;       } else {         if (t->right && t->right->cnt != 0) {           ret |= (1 << i);           t = t->right;         } else           t = t->left;       }     }     return ret;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     trie t;     t.x = new node();     long long int n;     cin >> n;     insert(t.x, 0);     for (long long int i = 1; i <= n; i++) {       char ch;       cin >> ch;       long long int x;       cin >> x;       if (ch ==  + ) insert(t.x, x);       if (ch ==  - ) del(t.x, x);       if (ch ==  ? ) cout << query(t.x, x) << endl;     }     return 0;   }   