#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, i, q, x, y;
int arbore[100100], rang[100100];
int root(int val) {
int R = val, aux;
while (R != arbore[R])
R = arbore[R];
while (val != arbore[val]) {
aux = val;
val = arbore[val];
arbore[aux] = R;
}
return R;
}
void couple(int x, int y) {
if (rang[x] > rang[y])
arbore[y] = x;
else
arbore[x] = y;
if (rang[x] == rang[y])
rang[y]++;
}
int main()
{
fin>>n>>m;
for (i = 1 ; i <= n ; i++) {
arbore[i] = i;
rang[i] = 1;
}
for (i = 1 ; i <= m ; i++) {
fin>>q>>x>>y;
if (q == 1) {
couple(root(x), root(y));
} else {
if (root(x) == root(y))
fout<<"DA\n";
else
fout<<"NU\n";
}
}
return 0;
}