#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,RG[100005],TT[100005];
int find(int x)
{
int R,y;
for (R=x;R!=TT[R];R=TT[R]);
for (;x!=TT[x];x=TT[x])
{
y=TT[x];
TT[x]=R;
x=y;
}
return R;
}
void unite(int x,int y)
{
if (RG[x]>RG[y]) TT[y]=x;
else TT[x]=y;
if (RG[x]==RG[y]) RG[y]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for (int i=1;i<=n;i++)
{
TT[i]=i;
RG[i]=1;
}
int typeOp,x,y;
while (m--)
{
scanf("%d %d %d",&typeOp,&x,&y);
if (typeOp==1) unite(find(x),find(y));
else
{
if (find(x)!=find(y)) printf("NU\n");
else printf("DA\n");
}
}
return 0;
}