#include <fstream>
#include <vector>
#include <climits>
using namespace std;
fstream cin("disjoint.in");
ofstream cout("disjoint.out");
int t[100001], r[100001];
int n, m, p;
int rad(int nod) {
if (nod != t[nod]) {
int rad1 = rad(t[nod]);
t[nod] = rad1;
return rad1;
}
return nod;
}
void prn(int a, int b) {
if (r[a] > r[b])
t[a] = b;
else if (r[a] < r[b])
t[b] = a;
else {
t[b] = a;
++r[a];
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
r[i] = t[i] = i;
}
for (int i = 1; i <= m; ++i) {
int a, b;
cin >> p >> a >> b;
if (p == 1) prn(rad(a), rad(b));
else cout << (rad(a) == rad(b) ? "DA" : "NU") << '\n';
}
return 0;
}