#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,tata[100200],rang[100200];
int radacina(int x)
{
if(tata[x]==x)
return x;
tata[x]=radacina(tata[x]);
return tata[x];
}
void uneste(int a, int b)
{
int ra=radacina(a), rb=radacina(b);
if(ra==rb)
return ;
if(rang[a]>rang[b])
tata[rb]=ra;
else
{
tata[ra]=rb;
if(rang[a]==rang[b])
rang[rb]++;
}
}
void query(int a, int b)
{
int ra=radacina(a), rb=radacina(b);
if(ra==rb)
g<<"DA\n";
else
g<<"NU\n";
}
int main()
{
f>>n>>m;
for(int i=1; i<=n; i++)
tata[i]=i, rang[i]=1;
for(int i=1; i<=m; i++)
{
int op,x,y;
f>>op>>x>>y;
if(op==1)
uneste(x,y);
if(op==2)
query(x,y);
}
return 0;
}