#include <stdio.h>
#include <stdbool.h>
bool postoji(int u, int v, int n, int m[n][n]);
main()
{
    int n, q, a, u, v;
    char c;
    scanf("%d %d", &n, &q);
    int m[n][n];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            m[i][j] = 5;
        }
    }
    for(int i = 0; i < q; i++)
    {
        scanf("%d %d %d", &a, &u, &v);
        if(a == 1)
        {
            scanf("%s", &c);
            m[u-1][v-1] = 1;
        }
        else if(a == 2)
        {
            if(postoji(u - 1, v - 1, n, m))
                printf("1\n");
            else
                printf("0\n");
        }

    }
}
bool postoji(int u, int v, int n, int m[n][n])
{
        for(int i = 0; i < n; i++)
        {

            if(m[u][i] == 1)
            {
                if(i == v)
                    return true;
                m[u][i] = 5;
                 return postoji(i, v, n, m);
            }
        }
        return false;
}


#include <stdio.h>
main()
{
    int n, q, a, u, v;
    char c;
    scanf("%d %d", &n, &q);
    int m[n][n];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            m[i][j] = 5;
        }
    }
    for(int i = 0; i < q; i++)
    {
        scanf("%d %d %d", &a, &u, &v);
        if(a == 1)
        {
            scanf("%s", &c);
            m[u-1][v-1] = 1;
        }
        else if(a == 2)
        {
            if(postoji(u - 1, v - 1, n, m) == 11)
                printf("1\n");
            else
                printf("0");
        }

    }
}
int postoji(int u, int v, int n, int m[n][n])
{
        for(int i = 0; i < n; i++)
        {

            if(m[u][i] == 1)
            {
                if(i == v)
                    return 11;
                m[u][i] = 5;
                postoji(i, v, n, m);
            }
        }
        return 0;
}