#include <bits/stdc++.h>

using namespace std;

vector <int> veze[1010];
int dveze[1010];
int glavni[1010];

int pokupi_glavnog(int i){
    if(glavni[i]==i){
        return i;
    }
    int gn=pokupi_glavnog(glavni[i]);
    glavni[i]=gn;
    return gn;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,q;
    cin>>n;
    int i,j;
    for(i=0;i<n;i++){
        dveze[i]=0;
        glavni[i]=i;
    }
    cin>>q;
    int k;
    int s;
    int pc,kc;
    char c;
    int g1,g2;
    for(k=0;k<q;k++){
        cin>>s;
        if(s==2){
            cin>>pc>>kc;
            pc--;
            kc--;
            g1=pokupi_glavnog(pc);
            g2=pokupi_glavnog(kc);
            if(g1==g2){
                cout<<"1"<<endl;
            }
            else{
                cout<<"0"<<endl;
            }
        }
        else{
            cin>>pc>>kc>>c;
            pc--;
            kc--;
            g1=pokupi_glavnog(pc);
            g2=pokupi_glavnog(kc);
            if(glavni[pc]==pc && glavni[kc]==kc){
                glavni[kc]=pc;
            }
            else if(glavni[pc]==pc){
                glavni[pc]=glavni[kc];
            }
            else if(glavni[kc]==kc){
                glavni[kc]=glavni[pc];
            }
            else{
                glavni[glavni[kc]]=glavni[pc];
            }
            veze[pc].push_back(kc);
            veze[kc].push_back(pc);
            (dveze[pc])++;
            (dveze[kc])++;
        }
        /*for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                cout<<dljp[i][j]<<" ";
            }
            cout<<endl;
        }
        cout<<endl<<endl;*/
    }
    return 0;
}
/*8
20
1 1 2 a
1 2 4 a
2 1 4
1
1 2 3 a
1 2 5 b
2 5 3
0
2 5 8
0
1 3 8 c
1 5 7 a
1 6 7 c
2 6 8
1
2 7 3
1
2 7 2
0
2 2 5
1
1 2 7 c
2 8 7
1
2 5 4
0*/