const fi = '';
fo = '';
maxn = trunc(1e4)+3;
var p : array[1..maxn] of longint;
i,j,n,m : longint;
x,u,v : longint;
procedure chuanbi;
begin
for i:=1 to maxn do p[i]:=i;
end;
function find(i:longint):longint;
begin
while p[i]<>i do i:=p[i];
exit(i);
end;
procedure lam1;
var i,j : longint;
begin
i:=find(u);
j:=find(v);
if i<>j then
if i<j then p[j]:=p[i] else p[i]:=p[j];
end;
procedure main;
var i:longint;
begin
assign(input,fi);reset(input);
assign(output,fo);rewrite(output);
readln(m);
chuanbi;
for i:=1 to m do
begin
readln(u,v,x);
if x=1 then lam1 else
if find(u)=find(v) then writeln(1) else writeln(0);
end;
close(input);
close(output);
end;
begin
main;
end.
Y29uc3QgICBmaSA9ICcnOwogICAgICAgIGZvID0gJyc7CiAgICAgICAgbWF4biA9IHRydW5jKDFlNCkrMzsKdmFyICAgICBwIDogYXJyYXlbMS4ubWF4bl0gb2YgbG9uZ2ludDsKICAgICAgICBpLGosbixtIDogbG9uZ2ludDsKICAgICAgICB4LHUsdiA6IGxvbmdpbnQ7CnByb2NlZHVyZSBjaHVhbmJpOwpiZWdpbgogICAgICAgIGZvciBpOj0xIHRvIG1heG4gZG8gcFtpXTo9aTsKZW5kOwpmdW5jdGlvbiBmaW5kKGk6bG9uZ2ludCk6bG9uZ2ludDsKYmVnaW4KICAgICAgICB3aGlsZSBwW2ldPD5pIGRvIGk6PXBbaV07CiAgICAgICAgZXhpdChpKTsKZW5kOwpwcm9jZWR1cmUgbGFtMTsKdmFyICAgICBpLGogOiBsb25naW50OwpiZWdpbgogICAgICAgIGk6PWZpbmQodSk7CiAgICAgICAgajo9ZmluZCh2KTsKICAgICAgICBpZiBpPD5qIHRoZW4KICAgICAgICBpZiBpPGogdGhlbiBwW2pdOj1wW2ldIGVsc2UgcFtpXTo9cFtqXTsKZW5kOwpwcm9jZWR1cmUgbWFpbjsKdmFyICAgICBpOmxvbmdpbnQ7CmJlZ2luCiAgICAgICAgYXNzaWduKGlucHV0LGZpKTtyZXNldChpbnB1dCk7CiAgICAgICAgYXNzaWduKG91dHB1dCxmbyk7cmV3cml0ZShvdXRwdXQpOwogICAgICAgIHJlYWRsbihtKTsKICAgICAgICBjaHVhbmJpOwogCiAgICAgICAgZm9yIGk6PTEgdG8gbSBkbwogICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxuKHUsdix4KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgeD0xIHRoZW4gbGFtMSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmluZCh1KT1maW5kKHYpIHRoZW4gd3JpdGVsbigxKSBlbHNlIHdyaXRlbG4oMCk7CiAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgY2xvc2UoaW5wdXQpOwogICAgICAgIGNsb3NlKG91dHB1dCk7CmVuZDsKYmVnaW4KICAgICAgICBtYWluOwplbmQu