#include <stdio.h>
#include <string.h>
#define NMAX 10
int nodp[NMAX];
int nodset[NMAX];
int main(void){
int i,j;
int nodn,siden;
while (scanf("%d%d",江若琳 - ?情路,&nodn,&siden)!=-1){
int setn =0;
int curset = 1;
int accept =1;
int x,y;
memset(nodp,0,sizeof(nodp));
memset(nodset,猎人和狼的故事,0,sizeof(nodset));
for(i=0;i<siden;i++){
scanf("%d%d",“我们开房吧时尚商务酒店”--有点暧昧,&x,英语脏话精选!(不是教你骂人,是教你听懂别人在骂你!),&y);
nodp[x]++;
nodp[y]++;
if(nodn<3||x==y||siden<3) accept =0;
if (!accept) continue;
if(nodset[x]){
if(nodset[y]&&nodset[y]!=nodset[x]){
//if x,y have a side with diff set, merge the two
int tmpset =nodset[y];
for(int j =0;j<nodn;j++){
if(nodset[j]==tmpset)
nodset[j]=nodset[x];
}
setn--;
}
else if(nodset[y]==0){
nodset[y] = nodset[x];
}
}
else if(nodset[y]){
nodset[x] = nodset[y];
}
else {
setn++;
nodset[x]=nodset[y]=curset;
curset++;
}
}
//gets(strtmp);
//confirm if only one circle
if(setn!=1){
accept =0;
}
//confirm if extra side outside the circle
for(j = 1;j<=nodn;j++){
if (nodp[j]!=2&&nodp[j]!=0){//nodp[j]!=2
accept =0;
break;
}
}
if(accept)
puts("YES");
else
puts("NO");
//
}
return 0;
}