#include<cstdio>
using namespace std;
int n,m,t;
int parent[100001];
int depth[100001];
int mx(int a,int b)
{
if(a>b)
{
return a;
}
return b;
}
void join(int x,int y)
{
int p1=x,p2=y;
while(p1!=parent[p1])
{
p1=parent[p1];
}
while(p2!=parent[p2])
{
p2=parent[p2];
}
int top;
if(depth[p1]>depth[p2])
{
top=p1;
parent[p2]=p1;
depth[p1]=mx(depth[p1],depth[p2]+1);
}
else
{
top=p2;
parent[p1]=p2;
depth[p2]=mx(depth[p2],depth[p1]+1);
}
p1=x;
p2=y;
while(p1!=parent[p1])
{
parent[p1]=top;
p1=parent[p1];
}
while(p2!=parent[p2])
{
parent[p2]=top;
p2=parent[p2];
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
parent[i]=i;
depth[i]=1;
}
int x,y;
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&t,&x,&y);
if(t==1)
{
join(x,y);
}
else
{
while(x!=parent[x])
{
x=parent[x];
}
while(y!=parent[y])
{
y=parent[y];
}
if(x==y)
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
}
}