program disjoint;
type tabel=array[0..100001] of longint;
var tata,sz:tabel;
n,m,i,j,x,y,z:longint;
f1,f2:text;
function root(x:longint):longint;
begin
while tata[x]<>x do x:=tata[x];
root:=x;
end;
procedure uneste(x,y:longint);
begin
if sz[x]>sz[y] then tata[y]:=x else tata[x]:=y;
if sz[x]=sz[y] then sz[y]:=sz[y]+1;
end;
begin
assign (f1,'disjoint.in');
assign (f2,'disjoint.out');
reset (f1);
rewrite (f2);
readln (f1,n,m);
for i:=1 to n do begin tata[i]:=i; sz[i]:=1; end;
for i:=1 to m do begin
readln (f1,z,x,y);
if z=1 then uneste(root(x),root(y)) else
if z=2 then begin
if root(x)=root(y) then writeln (f2,'DA') else writeln (f2,'NU'); end;
end;
close (f1);
close (f2);
end.