/*
#include <stdio.h>
int main()
{
int i,j,x=0,y=0,n,m,a;
int num[1001][1001];
scanf("%d %d", &x, &y);
/*for(i=0;i<y;y++)
{
scanf("%d %d", &num[i][i]);
printf("%d=%d %d", num[i][i]);
}
return 0;
}
int Test()
{
}
*/
#include <stdio.h>
int main()
{
int i,j,n,m,a,b=0;
int num[1001],t[1001];
scanf("%d %d", &n, &m);
for(i=0;i<=m+5;i++)
{
scanf("%d", &num[i]);
printf("Num[%d]=%d\n", i, num[i]);
}
a=i;
for(i=0;i<a;i++)
{
if(num[i]!=num[i+1])//정상적으로 연결된 다리의 수
{
b++;
}
t[i]=num[i]*10;//t에 mn형식으로 저장
printf("T[%d]=%d\n", i, t[i]);
}
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
if(t[i]==t[j])//중복된 경우를 제외
{
b--;
}
}
}
printf("%d\n", b);
if(b==(m*(m-3))/2)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
}