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