#include <iostream>
using namespace std;
const int NMAX = 1e5;
int p[NMAX + 1], sz[NMAX+1];
int Find(int x) {
while(x!=p[x])
x = p[x];
return x;
}
void Union(int x, int y) {
x = Find(x);
y = Find(y);
if(sz[x] > sz[y]) {
p[y] = x;
sz[x] +=sz[y];
} else {
p[x] = y;
sz[y] += sz[x];
}
}
int main(){
int n,q;
cin>>n>>q;
for(int i= 1 ;i<=n; ++i) {
p[i]=i;
sz[i]= i;
}
for(int i=1;i<=q; ++i) {
int op,x,y;
cin>>op>>x>>y;
if(op==1){
Union(x,y);
}
else{
if(Find(x) != Find(y)) {
cout<<"NU\n" ;
}
else cout<<"DA\n" ;
}
}
return 0;
}