#include<stdio.h>
#include<stdbool.h>
#define MAX_V 11
void solve()
{
    int v,e;
    if(scanf("%d",&v) != 1 || v<=0 || v>10)
    {
        printf("Invalid input\n");
        return;
    }
    if(scanf("%d",&v) != 1 )
    {
        printf("Invalid input\n");
        return;
    }
    bool reach[MAX_V][MAX_V] = {false};
    for(int i=0;i<v;i++)
    {
        reach[i][i] = true;
    }
    for(int i =0 ; i<e ; i++)
    {
        int src,dest;
        if(scanf("%d %d",&src,&dest)!=2)
        {
            printf("Invalid input\n");
            return;
        }
        if(src < 0 || src >= v || dest <0 || dest >= v)
        {
            printf("Invalid input\n");
            return;
        }
        reach[src][dest] = true;
    }
    for(int k = 0; k<v; k++)
    {
        for(int i=0;i<v;i++)
        {
            for(int j =0 ; j<v;j++)
            {
                if(reach[i][k] && reach [k][j])
                {
                    reach[i][j] = true;
                }
            }
        }
    }
    for(int i=0;i<v;i++)
    {
        for(int j = 0;j<v;j++)
        {
            if(!reach[i][j])
            {
                printf("False\n");
                return;
            }
        }
    }
    printf("True\n");
}
int main()
{
    solve();
    return 0;
}



















    if(v<0)
    {
        printf("Invalid input\n");
        return;
    }
    if(scanf("%d",&e)!= 1)
     return;
    bool reach[MAX_V][MAX_V];
    for(int i =0; i<v ; i++)
    {
        for(int j=0;j<v;j++)
        {
            reach[i][j]=(i==j);
        }
    }
    for(int i =0; i<e ; i++)
    {
        int src,dest;
        if(src>=0 && src <v && dest>=0 && dest< v)
        {
            reach[src][dest]=true;
        }
    }
    for(int k =0; k<v ; k++)
    {
        for(int i=0;i<v;i++)
        {
           for(int j =0; j< v; j++)
           {
               reach[i][j] = reach[i][j] || (reach[i][k] && reach[k][j]);
           }
        }
    }
    bool is_connected = true;
    for(int i =0;i<v;i++)
    {
        for(int j=0;j<v;j++)
        {
            if(!reach[i][j])
            {
                is_connected = true;
                break;
            }
            
        }
        if(!is_connected) break;
    }
    if(is_connected)
    {
        printf("True\n");
    }
    else
    {
        printf("False\n");
    }
}
int main()
{
    solve();
    return 0;
}