#include <cstdio>
#include <algorithm>
#include <ctime>
using namespace std;
class treap
{
public:
treap()
{
nil=new node(-1,-1);
nil->left=nil->right=nil;
rad=nil;
}
void insert(int val)
{
rad=insert(rad,val,rand());
}
void erase(int val)
{
rad=erase(rad,val);
}
int count(int val)
{
return count(rad,val);
}
private:
struct node
{
node *left,*right;
int val,priority;
node(int val1,int priority1,node *left1,node *right1) {val=val1;priority=priority1;left=left1;right=right1;}
node(int val1,int priority1) {val=val1;priority=priority1;}
};
node *rad,*nil;
struct pairnode
{
node *left,*right;
pairnode(node *left1,node *right1) {left=left1;right=right1;}
};
node *insert(node *nod,int val,int priority)
{
if(priority>nod->priority)
{
pairnode a=split(nod,val);
return new node(val,priority,a.left,a.right);
}
if(val<nod->val) nod->left=insert(nod->left,val,priority);
else nod->right=insert(nod->right,val,priority);
return nod;
}
pairnode split(node *nod,int val)
{
if(nod==nil) return pairnode(nil,nil);
if(val<nod->val)
{
pairnode a=split(nod->left,val);
nod->left=a.right;
return pairnode(a.left,nod);
}
else
{
pairnode a=split(nod->right,val);
nod->right=a.left;
return pairnode(nod,a.right);
}
}
node *erase(node *nod,int val)
{
if(nod->val==val)
{
node *a=merge(nod->left,nod->right);
delete nod;
return a;
}
if(val<nod->val) nod->left=erase(nod->left,val);
else nod->right=erase(nod->right,val);
return nod;
}
node *merge(node *left,node *right)
{
if(left==nil && right==nil) return nil;
if(left->priority>right->priority)
{
left->right=merge(left->right,right);
return left;
}
else
{
right->left=merge(left,right->left);
return right;
}
}
int count(node *nod,int val)
{
if(nod==nil) return 0;
if(nod->val==val) return 1;
if(val<nod->val) return count(nod->left,val);
else return count(nod->right,val);
}
};
int main()
{
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
srand(time(0));
int n,a,x;
treap v;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a,&x);
if(a==1) if(!v.count(x)) v.insert(x);
if(a==2) if(v.count(x)) v.erase(x);
if(a==3) printf("%d\n",v.count(x));
}
return 0;
}