#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
int n, m, padre[nmax], R[nmax];
int find_padre(int x){
int y = x;
while(padre[x] != x)
x = padre[x];
padre[y] = x; //euristiq 1
return padre[y];
}
void unite(int x, int y){
x = find_padre(x);
y = find_padre(y);
padre[x] = y;
}
void read(){
int op, x, y;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f >> n >> m;
for(int i=1; i<=n; i++)
padre[i] = i;
for(int i=1; i<=m; i++){
f >> op >> x >> y;
if(op == 1)
unite(x, y);
else
g << (find_padre(x) == find_padre(y) ? "DA\n" : "NU\n");
}
}
int main()
{
read();
return 0;
}