#include <fstream>
#include <vector>
#define P 786433
using namespace std;
vector<int> G[P];
vector<int>::iterator find(int x){
int list = x % P;
vector<int>::iterator it;
for(it = G[list].begin(); it != G[list].end(); it++){
if(*it == x){
return it;
}
}
return G[list].end();
}
void insert(int x){
int list = x % P;
if(find(x) == G[list].end()){
G[list].push_back(x);
}
}
void erase(int x){
int list = x % P;
auto it = find(x);
if(it != G[list].end()){
G[list].erase(it);
}
}
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int main() {
int N, op, nr;
fin>>N;
for(int i = 0; i< N; i++){
fin>>op>>nr;
switch(op){
case 1:
insert(nr);
break;
case 2:
erase(nr);
break;
case 3:
if(find(nr) != G[nr % P].end()) fout<<1<<'\n';
else fout<<0<<'\n';
break;
default:
break;
}
}
return 0;
}