#include<stdio.h>
#include<string.h>
int mark[1001];
int a[1001][1001];
int sum=0;
void dfs(int i,int bian) //如果是形参是a[][]而实参是dfs(a,k,k)会出现bug
{
int j;
mark[i]=1;
for(j=1;j<=bian;j++)
{
if(a[i][j]==1&&mark[j]==0)
{
dfs(j,bian);
}
}
}
int main()
{
int t,k,m,x,y,i,j;
while(~scanf("%d%d",&k,&m))
{
for(i=1;i<=k;i++)
{
mark[i]=0;
}
for(i=1;i<=k;i++)
{
for(j=1;j<=k;j++)
{
a[i][j]=0;
}
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=1;
}
dfs(k,k);
if(mark[1]==1&&mark[k]==1) printf("YES\n");
else printf("NO\n");
}
}