#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T& num) {
  bool start = false, neg = false;
  char c;
  num = 0;
  while ((c = getchar()) != EOF) {
    if (c == '-')
      start = neg = true;
    else if (c >= '0' && c <= '9') {
      start = true;
      num = num * 10 + c - '0';
    } else if (start)
      break;
  }
  if (neg) num = -num;
}
char opt[10];
const int maxn = (int)(8e6) + 5;
int ch[maxn][2];
int sum[maxn];
int idx;
inline void add(int x, int v) {
  int rt = 1;
  for (int i = (30); i >= (0); i--) {
    int c = (x >> i) & 1;
    if (!ch[rt][c]) ch[rt][c] = ++idx;
    rt = ch[rt][c];
    sum[rt] += v;
  }
}
inline int qmax(int x) {
  int rt = 1, res = 0;
  for (int i = (30); i >= (0); i--) {
    int c = (x >> i) & 1;
    c ^= 1;
    if (sum[ch[rt][c]]) {
      rt = ch[rt][c];
      res += (1 << i);
    } else
      rt = ch[rt][c ^ 1];
  }
  return res;
}
int main() {
  int q, x;
  idx = 1;
  add(0, 1);
  read(q);
  for (int i = (1); i <= (q); i++) {
    scanf("%s%d", opt, &x);
    if (opt[0] == '+')
      add(x, 1);
    else if (opt[0] == '-')
      add(x, -1);
    else
      printf("%d\n", qmax(x));
  }
  return 0;
}
