#include<bits/stdc++.h>
using namespace std;
#define N 100010
typedef long long ll;
int cnt=0;
struct node
{
    int to;
}p[2*N];
int nxt[2*N],head[N],d[N];
vector<int>d4;
void add(int u,int v)
{
    cnt++;
    p[cnt].to=v;
    nxt[cnt]=head[u];
    head[u]=cnt;
}
int dfs(int x,int fa,int st,int ed)
{
    if(x==st)return 0;
    if(x==ed)return 1;
    for(int i=head[x];i;i=nxt[i])
    {
        if(p[i].to==fa )continue;
        return dfs(p[i].to,x,st,ed);
    }
    return 0;
}
int main()
{
    int n,m,x,y;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        add(x,y),add(y,x);
        d[x]++,d[y]++;
    }
    int flag=0;
    for(int i=1;i<=n;i++)
    {
        if(d[i]&1){printf("No\n");return 0;}
        if(d[i]>=6)flag=1;
        if(d[i]==4)d4.push_back(i);
    }
    if(flag || d4.size()>=3)
        {printf("Yes\n");return 0;}
    if(d4.size()<2)
    { printf("No\n");return 0;}

    int num=0,st=d4[0],ed=d4[1];
    for(int i=head[st];i;i=nxt[i])
        if(dfs(p[i].to,st,st,ed))
                num++;
    if(num==2)
        printf("Yes\n");
    else
        printf("No\n");
}

