#include <bits/stdc++.h>
#define nmax int(1e6+7)
using namespace std;
int n, m, par[nmax], sz[nmax];
int find_set(int u){
if(u==par[u]) return u;
return par[u] = find_set(par[u]);
}
void union_sets(int u, int v){
u = find_set(u);
v = find_set(v);
if(u==v) return ;
if(sz[u] < sz[v]) swap(u, v);
par[v] = u;
}
int main(){
cin >> n >> m;
for(int i=1; i<=n; i++)par[i] = i, sz[i] = 1;
for(int i=1; i<=m; i++){
int type; cin >> type;
int u,v ;cin >> u >> v;
if(type==1) union_sets(u, v);
else{
u = find_set(u);
v = find_set(v);
if(u==v) cout<<"1\n";
else cout<<"0\n";
}
}
return 0;
}
/*
Solve by: Truong Tuan Kiet - Informatics K36. Solve in 11h00 - 7/2/2025
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbm1heCBpbnQoMWU2KzcpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBtLCBwYXJbbm1heF0sIHN6W25tYXhdOwppbnQgZmluZF9zZXQoaW50IHUpewogICAgaWYodT09cGFyW3VdKSByZXR1cm4gdTsKICAgIHJldHVybiBwYXJbdV0gPSBmaW5kX3NldChwYXJbdV0pOwp9CnZvaWQgdW5pb25fc2V0cyhpbnQgdSwgaW50IHYpewogICAgdSA9IGZpbmRfc2V0KHUpOwogICAgdiA9IGZpbmRfc2V0KHYpOwogICAgaWYodT09dikgcmV0dXJuIDsKICAgIGlmKHN6W3VdIDwgc3pbdl0pIHN3YXAodSwgdik7CiAgICBwYXJbdl0gPSB1Owp9CmludCBtYWluKCl7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgZm9yKGludCBpPTE7IGk8PW47IGkrKylwYXJbaV0gPSBpLCBzeltpXSA9IDE7CiAgICBmb3IoaW50IGk9MTsgaTw9bTsgaSsrKXsKICAgICAgICBpbnQgdHlwZTsgY2luID4+IHR5cGU7CiAgICAgICAgaW50IHUsdiA7Y2luID4+IHUgPj4gdjsKICAgICAgICBpZih0eXBlPT0xKSB1bmlvbl9zZXRzKHUsIHYpOwogICAgICAgIGVsc2V7CiAgICAgICAgICAgIHUgPSBmaW5kX3NldCh1KTsKICAgICAgICAgICAgdiA9IGZpbmRfc2V0KHYpOwogICAgICAgICAgICBpZih1PT12KSBjb3V0PDwiMVxuIjsKICAgICAgICAgICAgZWxzZSBjb3V0PDwiMFxuIjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQovKgogICAgU29sdmUgYnk6IFRydW9uZyBUdWFuIEtpZXQgLSBJbmZvcm1hdGljcyBLMzYuIFNvbHZlIGluIDExaDAwIC0gNy8yLzIwMjUKKi8K