#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
int n;
struct dsu{
int N;
vector<int> parent;
void init (){
N = n;
parent.resize(n + 5);
for (int i = 1; i <= n; ++i){
parent[i] = i;
}
}
int _find (int u){
if (u == parent[u])
return u;
return parent[u] = _find(parent[u]);
}
void unite (int u, int v){
u = _find(u);
v = _find(v);
if (u != v){
parent[v] = u;
}
}
};
int main()
{
dsu d;
cin >> n;
d.init();
int q; cin >> q;
while (q--){
int c, u, v;
cin >> c >> u >> v;
if (c == 1){
d.unite(u, v);
}
else{
if (d._find(u) == d._find(v)){
cout << "DA";
}
else{
cout << "NU";
}
cout << '\n';
}
}
return 0;
}