Cod sursa(job #868210)
type pnod=^nod;
nod=record
info:longint;
dr:pnod;
end;
var a:array[1..1000001] of PNOD;
c:byte;n,j:integer;d,i:longint; t:boolean;
f,g:text;
procedure adaugare(e:longint);
var d:pnod;
begin
new(d);
d^.dr:=a[i];
d^.info:=e;
a[i]:=d;
end;
function verificare(x:longint):boolean;
var r,k:pnod;ver:boolean;
begin
ver:=false;
if a[i]^.dr<>nil then
Begin
r:=a[i];
if r^.info=x then
begin
ver:=true;
if c=2 then
a[i]:=a[i]^.dr;
if c=1 then
adaugare(x);
end;
while r^.dr^.dr<>nil do
begin
if r^.dr^.info=x then
begin
ver:=true;
if c=2 then
begin
k:=r^.dr^.dr;
r^.dr:=k;
end;
if c=1 then
adaugare(x);
end;
if r^.dr<>nil then
r:=r^.dr;
end
end
else
begin
if c=1 then
adaugare(x);
end;
verificare:=ver;
end;
begin
assign(f,'hasuri.in');reset(f);
assign(g,'hasuri.out');rewrite(g);
readln(f,n);
For i:=1 to 1000001 do
begin
new(a[i]);
a[i]^.dr:=nil;
end;
for j:=1 to n do
begin
readln(f,c,d);
i:=(d mod 1000000)+1;
t:=verificare(d);
if c=3 then
begin
if t=true then
writeln(g,'1')
else
writeln(g,'0');
end;
end;
writeln(g);
close(f);
close(g);
end.