#include<stdio.h>
#define MAX 10001

 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(x){
         if(par[x]==x){
                   return x;
                   }
         else {
               return par[x]=find(par[x]);
               }
         }

 int 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,com,i,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)){printf("1\n");}
                           else {printf("0\n");}
                          }
                    }
        return 0;
        }

