#include <cstdio>
int sef[100001];
int sefsuprem(int i){
if (sef[i]==i)
return i;
return sef[i]=sefsuprem(sef[i]);
}
void unire(int x,int y){
sef[x]=sefsuprem(x);
sef[y]=sefsuprem(y);
sef[sef[x]]=sef[y];
}
int main (){
FILE *fin=fopen("disjoint.in","r");
FILE *fout=fopen("disjoint.out","w");
int n,m,i,c,x,y;
fscanf (fin,"%d %d",&n,&m);
for (i=1;i<=n;i++)
sef[i]=i;
for (i=1;i<=m;i++){
fscanf (fin,"%d %d %d",&c,&x,&y);
if (c==1)
unire(x,y);
else{
sef[x]=sefsuprem(x);
sef[y]=sefsuprem(y);
if (sef[x]==sef[y])
fprintf (fout,"DA\n");
else
fprintf (fout,"NU\n");
}
}
return 0;
}