#include <iostream>
#include <cstdio>
#define nmax 100001
using namespace std;
FILE *f=fopen("disjoint.in","r"),*g=fopen("disjoint.out","w");
int t[nmax],r[nmax],n;
void unite(int x, int y)
{
if(r[x]>r[y])
t[y]=x;
else if(r[x]<r[y])
t[x]=y;
else
{
t[y]=x;
r[x]++;
}
}
int finds(int x)
{
int r,i;
for(r=x;t[r]!=r;r=t[r]);
for(;t[x]!=x;x=t[x])
{
i=t[x];
t[x]=r;
x=i;
}
return r;
}
int main()
{
int i,j,m,tip,x,y;
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
t[i]=i;
r[i]=1;
}
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&tip,&x,&y);
if(tip==1&&finds(x)!=finds(y))
unite(x,y);
else
{
if(finds(x)==finds(y))
fprintf(g,"DA\n");
else
fprintf(g,"NU\n");
}
}
fclose(f);
fclose(g);
return 0;
}