#include <fstream>
#include <vector>
using namespace std;
const int kMod = 5e6 + 11;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int Hash[kMod], target[3];
int* set(vector<int> x) {
for (int i = 0; i < int(x.size()); ++i) {
target[i] = x[i];
}
for (int i = int(x.size()); i < 3; ++i) {
target[i] = -3;
}
return target;
}
void mod(int &v) {
while (v >= kMod) {
v -= kMod;
}
}
int search(int val, int target[]) {
for (int j = 1; ; ++j) {
val += 1 + 2 * (j - 1);
mod(val);
for (int i = 0; i < 3; ++i) {
if (target[i] == Hash[val]) {
return val;
}
}
}
}
int main() {
for (int i = 0; i < kMod; ++i) {
Hash[i] = -1;
}
int n; fin >> n;
while (n--) {
int t, x, pos; fin >> t >> x;
if (t == 1) {
pos = search(x, set({x, -1, -2}));
Hash[pos] = x;
} else if (t == 2) {
pos = search(x, set({x, -1}));
if (hash[pos] == x) {
Hash[pos] = -2;
}
} else {
pos = search(x, set({x, -1}));
if (Hash[pos] == x) {
fout << "1\n";
} else {
fout << "0\n";
}
}
}
return 0;
}