# include <bits/stdc++.h>
using namespace std;
struct treap
{
int x,y;
treap * left, *right;
treap(int x,int y,treap * left,treap * right) : x(x),y(y),left(left),right(right) {}
treap() : x(0),y(0),left(0),right(0) {}
};
int cnt = 0;
treap * Root = new treap(0,0,0,0);
treap * Merge(treap * a,treap * b)
{
if (!a) return b;
if (!b) return a;
if (a->y > b->y) return new treap(a->x,a->y,a->left,Merge(a->right,b));
else return new treap(b->x,b->y,Merge(a,b->left),b->right);
}
void print(treap * T)
{
if (!T) return;
cerr << T->x << ' ';
if (T->left) print(T->left);
if (T->right) print(T->right);
}
void split(treap * T,int key,treap * &Left,treap * &Right)
{
if (!T)
{
Left = Right = 0;
return ;
}
if (T->x <= key)
{
if (!T->right) Left = T,Right = 0;
else
{
treap * nw;
split(T->right,key,nw,Right);
Left = new treap(T->x,T->y,T->left,nw);
}
}
else
{
if (!T->left) Left = 0,Right = T;
else
{
treap *nw;
split(T->left,key,Left,nw);
Right = new treap(T->x,T->y,nw,T->right);
}
}
}
void del(int val)
{
treap *l,*r,*m,*aux;
split(Root,val,aux,r);
split(aux,val-1,l,m);
Root = Merge(l,r);
}
void add(int val)
{
treap *l,*r;
split(Root,val,l,r);
treap * m = new treap(val,rand() + 1,0,0);
Root = Merge(Merge(l,m),r);
}
int ok(int val)
{
treap *l,*r,*m;
split(Root,val,l,r);
split(l,val-1,r,m);
return (m != 0);
}
int main(void)
{
srand(time(0));
int n;
ifstream fi("hashuri.in");
ofstream fo("hashuri.out");
ios_base :: sync_with_stdio(0);
fi>>n;
while (n --)
{
int op,val;
fi>>op>>val;
if (op == 1) add(val);
else
if (op == 2) del(val);
else fo << ok(val) << '\n';
}
return 0;
}