#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int gaseste_adancime(vector<int>&,int);
int gaseste_tata(vector<int>&,int);
void disjoint();
int main()
{
disjoint();
return 0;
}
void disjoint()
{
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
fin>>n>>m;
vector<int>parinte(n+1);
for(int i=1; i<=n; i++)
parinte[i]=i;
int cod,x,y;
for(int i=0;i<m;i++)
{
fin>>cod>>x>>y;
if(cod==1)
{
if(gaseste_tata(parinte,x)!=gaseste_tata(parinte,y))
if(gaseste_adancime(parinte,x)>gaseste_adancime(parinte,y))
parinte[y]=x;
else
parinte[x]=y;
}
if(cod==2)
{
if(gaseste_tata(parinte,x)==gaseste_tata(parinte,y))
fout<<"DA\n";
else
fout<<"NU\n";
}
}
}
int gaseste_adancime(vector<int>&parinte,int nod)
{
if(parinte[nod]==nod)
return 1;
return 1+gaseste_adancime(parinte,parinte[nod]);
}
int gaseste_tata(vector<int>&parinte,int nod)
{
if(parinte[nod]==nod)
return nod;
parinte[nod]=gaseste_tata(parinte,parinte[nod]);
return parinte[nod];
}