#include <bits/stdc++.h>
using namespace std;
int Nxt[3100005][2], Sum[3100005], Indx = 1;
void add(int x, int v) {
  bool Gap;
  int now = 1;
  for (int i = 1 << 30; i; i >>= 1) {
    Sum[now] += v;
    Gap = x & i;
    if (!Nxt[now][Gap]) Nxt[now][Gap] = ++Indx;
    now = Nxt[now][Gap];
  }
  Sum[now] += v;
}
int ask(int x, int y) {
  bool Gap, Tgt;
  int now = 1, ans = 0;
  for (int i = 1 << 30; i; i >>= 1) {
    Gap = x & i;
    Tgt = y & i;
    if (Gap < Tgt) ans += Sum[Nxt[now][0]];
    if (Gap & Tgt) ans += Sum[Nxt[now][1]];
    if (!Tgt)
      now = Nxt[now][Gap];
    else
      now = Nxt[now][Gap ^ 1];
  }
  return ans;
}
int n;
int main() {
  cin >> n;
  for (int i = 1, op, x, y; i <= n; i++) {
    cin >> op >> x;
    if (op == 1) add(x, 1);
    if (op == 2) add(x, -1);
    if (op == 3) {
      cin >> y;
      cout << ask(x, y) << endl;
    }
  }
  return 0;
}
