#include <iostream>
#include <fstream>
#include <vector>
#define M 666013
using namespace std;
vector<int> lst[M];
auto search(int val)
{
vector<int>::iterator it;
for (it = lst[val % M].begin(); it != lst[val % M].end(); it++)
{
if (*it == val)
{
return it;
}
}
return lst[val % M].end();
}
void add(int val)
{
int entr = val % M;
auto it = search(val);
if (it == lst[entr].end())
{
lst[entr].push_back(val);
}
}
void del(int val)
{
int temp = val % M;
auto it = search(val);
if (it != lst[temp].end())
{
lst[temp].erase(it);
}
}
bool ext(int val)
{
int temp = val % M;
auto it = search(val);
if (it != lst[temp].end())
{
return 1;
}
return 0;
}
int main()
{
ifstream in;
in.open("hashuri.in");
ofstream out;
out.open("hashuri.out");
int n, op, val;
in >> n;
for (int i = 0; i < n; ++i)
{
in >> op >> val;
switch (op)
{
case 1:
add(val);
break;
case 2:
del(val);
break;
case 3:
out << ext(val) << '\n';
break;
}
}
in.close();
out.close();
}