#include<stdio.h>
#include<string.h>
int n,m;
int graph[101][101];
int visited[101];
void dfs(int start)
{
    visited[start]=1;
    for(graph[start][i])&& !visited[i])
    dfs(i);
    
}
int main()
{
    scanf("%d",&n);
    if(n<0)
    {
        printf("Invalid input");
        return 0;
    }
    scanf("%d",&m);
    memset(graph,0,sizeof(graph));
    for(int i=0;i<n;i++){
        int u,v;
        scanf("%d %d",&u,&v);
        graph[u][v]=1;
    }
    memset(visited,o,sizeof(visited));
    dfs(0);
    for(int i=0;i<n;i++)
    {
        if(!visited[i])
        {
            printf("False");
            return 0;
        }
    }
    int rev[101][100];
    memset(rev,0,sizeof(rev));
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    graph[i][j]=rev[i][j];
    dfs(0);
    for(int i=0;i<n;i++)
    {
        if(!visited[i]){
            printf("Invalid input");
            return 0;
        }
    }
    printf("True");
    return 0;
}