#include using namespace std; const int N=2e4+5,M=5e4+5; int n,m,k,cnt,head[N]; bool ck[N][N]; struct edge{ int to,nxt; }e[M<<1]; void add(int u,int v){ e[++cnt]=(edge){v,head[u]}; head[u]=cnt; } bool work(int x){ for(int i=head[x];i;i=e[i].nxt){ int a=e[i].to; for(int j=head[x];j;j=e[j].nxt){ int b=e[j].to; if(b==a) break; for(int k=head[a];k;k=e[k].nxt){ int c=e[k].to; if(c==b||c==x) continue; for(int l=head[b];l;l=e[l].nxt){ int d=e[l].to; if(d==a||d==c||d==x) continue; if(ck[c][d]) return true; } } } } return false; } int main(){ // freopen("circle.in","r",stdin); // freopen("circle.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1,x,y;i<=m;i++){ scanf("%d%d",&x,&y); add(x,y),add(y,x); ck[x][y]=ck[y][x]=true; } if(work(1)) printf("YES\n"); else printf("NO\n"); return 0; }