#include <iostream>
#include <vector>
using namespace std;

int cale(vector<int>& v,int a)
{
    while(a!=v[a])
    {
        a=v[v[a]];
    }
    return a;
}


void napravi_vezu(vector<int>& v,int a,int b)
{

    int ca=cale(v,a);
    int cb=cale(v,b);
    if(ca<cb)
    {
        v[cb]=ca;
    }
    else
    {
        v[ca]=cb;
    }

}


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,m;
    cin >>n>>m;
    vector<int> v(n);
    for(int i=0;i<n;i++)
    {
        v[i]=i;
    }
    for(int i=0;i<m;i++)
    {
        int k;
        cin >>k;
        if(k==1)
        {
            int a,b;
            cin >>a>>b;
            a--;
            b--;
            char c;
            cin >>c;
            napravi_vezu(v,a,b);
        }
        else
        {
            int a,b;
            cin >>a>>b;
            a--;
            b--;
            if(cale(v,a)==cale(v,b))
            {
                cout <<1<<"\n";
            }
            else
            {
                cout <<0<<"\n";
            }
        }
    }


    return 0;
}