#include <fstream>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int hashSize=666013;
struct item{
int nr;
item *nextItem;
}*Hash[hashSize];
void addNumber(int x)
{
item *pivot=new item;
int r=x%hashSize;
pivot=Hash[r];
while(pivot&&pivot->nr!=x) pivot=pivot->nextItem;
if(pivot==NULL)
{
pivot=new item;
pivot->nr=x;
pivot->nextItem=Hash[r];
Hash[r]=pivot;
}
}
void deleteNumber(int x)
{
item *pivot=new item;
item *prevItem=NULL;
int r=x%hashSize;
pivot=Hash[r];
while(pivot&&pivot->nr!=x) prevItem=pivot, pivot=pivot->nextItem;
if(pivot)
{
item *toDelete=pivot;
if(prevItem==NULL) Hash[r]=Hash[r]->nextItem, delete toDelete;
else
{
prevItem->nextItem=pivot->nextItem;
delete toDelete;
}
}
}
void checkNumber(int x)
{
item *pivot=new item;
int r=x%hashSize;
pivot=Hash[r];
while(pivot&&pivot->nr!=x) pivot=pivot->nextItem;
if(pivot) fout<<1<<"\n";
else fout<<0<<"\n";
}
int main()
{
int n, op, x;
fin>>n;
for(int i=1;i<=n;++i)
{
fin>>op>>x;
if(op==1) addNumber(x);
else if(op==2) deleteNumber(x);
else checkNumber(x);
}
return 0;
}