#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 1e5;
int n,q;
int papa[NMAX+1];
struct DSU{
void init()
{
for(int i = 1; i <= n; i++)
papa[i] = i;
}
int find_parent(int x)
{
if(x != papa[x])
return papa[x] = find_parent(papa[x]);
else
return x;
}
void unite(int st, int dr)
{
int p_x = find_parent(st);
int p_y = find_parent(dr);
if(p_x != p_y)
papa[p_x] = p_y;
}
};
int main()
{
fin >> n >> q;
DSU dsu;
dsu.init();
while(q--)
{
int c,st,dr;
fin >> c >> st >> dr;
if(c == 1)
dsu.unite(st,dr);
else
fout << ((dsu.find_parent(st) == dsu.find_parent(dr)) ? "DA" : "NU") << '\n';
}
return 0;
}