#include <cstdio>
using namespace std;
struct Triplet
{
int t, x, y;
};
int v[100005];
int Radacina( int x )
{
int cx = x, a;
while( v[x] != x )
x = v[x];
while(v[cx] != cx){
a = v[cx];
v[cx] = x;
cx = a;
}
return x;
}
Triplet a;
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, m, i;
scanf("%d%d", &n, &m);
for( i = 1; i <= n; i++ )
v[i] = i;
for( i = 1; i <= m; i++)
{
scanf("%d%d%d", &a.t, &a.x, &a.y);
if( a.t == 1 )
{
v[Radacina(a.x)] = Radacina(a.y);
}else{
if(Radacina(a.x) == Radacina(a.y))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}