#include <fstream>
using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
int noduri , operatii , tata[100001] , inaltime[100001];
int Radacina (int nod)
{
if (!tata[nod])
return nod;
return Radacina(tata[nod]);
}
void Uneste (int nod_1 , int nod_2)
{
if (inaltime[nod_1] > inaltime[nod_2])
tata[nod_2] = nod_1;
else
tata[nod_1] = nod_2;
if (inaltime[nod_1] == inaltime[nod_2])
inaltime[nod_2]++;
}
int main ()
{
cin >> noduri >> operatii;
int tip , nod_1 , nod_2;
for (int indice = 1 ; indice <= operatii ; indice++)
{
cin >> tip >> nod_1 >> nod_2;
if (tip == 1)
Uneste(Radacina(nod_1) , Radacina(nod_2));
else
cout << (Radacina(nod_1) == Radacina(nod_2) ? "DA\n" : "NU\n");
}
cout.close(); cin.close();
return 0;
}