#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int Find(std::vector<int>& p, int x) {
int r = x;
while (p[r] != r) {
r = p[r];
}
while (x != p[x]) {
int aux = p[x];
p[x] = r;
x = aux;
}
return r;
}
void Union(std::vector<int>& p, std::vector<int>& h, int x, int y) {
int rx = Find(p, x);
int ry = Find(p, y);
if (rx == ry)
return;
if (h[rx] < h[ry]) {
p[rx] = ry;
} else {
p[ry] = rx;
if (h[rx] == h[ry])
h[ry]++;
}
}
int main() {
int n, m;
in >> n >> m;
std::vector<int> p(n + 1);
std::vector<int> h(n + 1, 1);
for (int i = 1; i <= n; i++)
p[i] = i;
for (int i = 0; i < m; i++) {
int op, x, y;
in >> op >> x >> y;
if (op == 1) {
Union(p, h, x, y);
} else {
if (Find(p, x) == Find(p, y)) {
out << "DA\n";
} else {
out << "NU\n";
}
}
}
}