#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
#define NMAX 100001
int n,m,father[NMAX],s[NMAX];
int Find(int node){
if(father[node]==node)
return node;
return father[node]=Find(father[node]);
}
void Union(int x,int y){
int a=Find(x),b=Find(y);
if(s[a]>s[b])
swap(a,b);
father[a]=b;
s[b]+=s[a];
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++)
father[i]=i;
memset(s,1,sizeof(s));
for(int i=1;i<=m;i++){
int tip,a,b;
in>>tip>>a>>b;
if(tip==1)
Union(a,b);
else{
if(Find(a)==Find(b))
out<<"DA"<<endl;
else
out<<"NU"<<endl;
}
}
return 0;
}