/*
URL : https://onlinejudge.u-aizu.ac.jp/courses/library/3/DSL/1
*/

#include<stdio.h>

int n;

void unite(int x, int y, int *N);
void same(int x, int y, int *N);

int main(void)
{
	int q;
	int i;
	int c,x,y;
	scanf("%d %d",&n, &q);
	
	int N[n];
	
	for(i = 0; i < n; i++){
		N[i] = i;
	}
	
	while(q--){
		scanf("%d %d %d",&c, &x, &y);
		
		switch(c){
		case 0:
			unite(x, y, N);
			break;
			
		case 1:
			same(x, y, N);
			break;
		}
	}
	return 0;
}

void unite(int x, int y, int *N)
{
	int i;
	int z = N[x];
	for(i = 0; i < n; i++){
		if(z == N[i]){
			N[i] = N[y];
		}
	}
}

void same(int x, int y, int *N)
{
	if(N[x] == N[y]){
		printf("%d\n",1);
	} else {
		printf("%d\n",0);
	}

}
