#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
int tata[100010];
int sz[100010];
void connect(int nod1,int nod2)
{
int tata1=nod1,tata2=nod2;
while(tata1!=tata[tata1])
{
tata1=tata[tata1];
}
while(tata2!=tata[tata2])
{
tata2=tata[tata2];
}
if(sz[tata1]>sz[tata2])
{
sz[tata1]=max(sz[tata1],sz[tata2]+1);
tata[tata2]=tata1;
tata2=nod2;
int keep;
while(tata2!=tata[tata2])
{
keep=tata[tata2];
tata[tata2]=tata1;
tata2=keep;
}
}
else
{
sz[tata2]=max(sz[tata2],sz[tata1]+1);
tata[tata1]=tata2;
tata1=nod1;
int keep;
while(tata1!=tata[tata1])
{
keep=tata[tata1];
tata[tata1]=tata2;
tata1=keep;
}
}
}
int is_connected(int nod1, int nod2)
{
int tata1=nod1,tata2=nod2;
while(tata1!=tata[tata1])
{
tata1=tata[tata1];
}
while(tata2!=tata[tata2])
{
tata2=tata[tata2];
}
if(tata1==tata2)
{
return 1;
}
return 0;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
tata[i]=i;
sz[i]=1;
}
int x,y,z;
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&x,&y,&z);
if(x==1)
{
connect(y,z);
}
else
{
if(is_connected(y,z)==1)
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
}
}