#include <fstream>
using namespace std;
int n, m;
int radacina[100005], rang[100005];
int find(int x){
int R;
for (R = x; radacina[R] != R; R = radacina[R]);
for (; radacina[x] != x;){
int y = radacina[x];
radacina[x] = R;
x = y;
}
return R;
}
void unite(int x, int y)
{
if(rang[x] > rang[y])
radacina[y] = x;
else radacina[x] = y;
if(rang[x] == rang[y])
++rang[y];
}
int main()
{
for (int i = 1; i < 100005; ++i)
radacina[i] = i,
rang[i] = 1;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
fin >> n >> m;
while(m--){
int type, x, y;
fin >> type >> x >> y;
switch(type){
case 2:
if(find(x) == find(y))
fout << "DA\n";
else fout << "NU\n";
break;
case 1:
unite(find(x), find(y));
break;
}
}
return 0;
}