#include <stdio.h>
 
#define MAX 10000
 
int par[MAX],rank[MAX];
 
void init(int n){
  int i;
  for(i = 0 ; i < n ; i++){
    par[i] = i;
    rank[i] = 0;
  }
}
 
int find(int x){
  if(par[x] == x){
    return x;
  }else{
    return par[x] = find(par[x]);
  }
}
 
void unite(int x,int y){
  x = find(x);
  y = find(y);
 
  if(x == y) return;
 
  if(rank[x] < rank[y]){
    par[x] = y;
  }else{
    par[y] = x;
    if(rank[x] == rank[y]){
      rank[x]++;
    }
  }
}
 
int same(int x,int y){
  return find(x) == find(y);
}
 
int main(){
  int n,q,i,com,x,y;
 
  scanf("%d%d" ,&n ,&q);
  init(n);
  for(i = 0 ; i < q ; i++){
    scanf("%d%d%d" ,&com ,&x ,&y);
 
    if(com == 0){
      unite(x,y);
    }else{
      if(same(x,y)){
    puts("1");
      }else{
    puts("0");
      }
    }
  }
 
  return 0;
}
