#include<bits/stdc++.h>
using namespace std;
int n,m,i,d[1000005],u,v,ans,head[1000005],Next[2000005],adj[2000005],k,s;
bool flag=true;
void Push(int u,int v)
{
	Next[++k]=head[u];
	head[u]=k;
	adj[k]=v;
}
void dfs(int i,int fa)
{
	if((i==u&&fa!=0)||i==v)
	{
		if(i==v)
			++s;
		return;
	}
	int j;
	for(j=head[i];j!=0;j=Next[j])
		if(adj[j]!=fa)
			dfs(adj[j],i);
}
int main()
{
	scanf("%d %d",&n,&m);
	for(i=1;i<=m;++i)
	{
		scanf("%d %d",&u,&v);
		++d[u];
		++d[v];
		Push(u,v);
		Push(v,u);
	}
	for(i=1;i<=n;++i)
	{
		ans+=d[i]/2-1;
		if(d[i]&1)
			flag=false;
	}
	u=v=0;
	for(i=1;i<=n;++i)
		if(d[i]==4)
			if(u==0)
				u=i;
			else
				v=i;
	if(ans==2&&v!=0&&flag)
	{
		dfs(u,0);
		if(s>2)
			flag=false;
	}
	puts(ans>=2&&flag?"Yes":"No");
}
