#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int MAXN = 100005;
int tata[MAXN], rang[MAXN];
int root(int x) {
if (tata[x] == x) return x;
return tata[x] = root(tata[x]);
}
int main() {
int n, m, tip, x, y;
in >> n >> m;
for (int i = 1; i <= n; i++) {
tata[i] = i;
}
while (m--) {
in >> tip >> x >> y;
if (tip == 1) {
int rx = root(x);
int ry = root(y);
if (rx != ry) {
if (rang[rx] < rang[ry]) tata[rx] = ry;
else if (rang[rx] > rang[ry]) tata[ry] = rx;
else {
tata[ry] = rx;
rang[rx]++;
}
}
} else {
if (root(x) == root(y)) out << "DA\n";
else out << "NU\n";
}
}
return 0;
}