#include<bits/stdc++.h>
using namespace std;
#define MAX_N 100010
std::vector<int> s[MAX_N];
int low[MAX_N],v[MAX_N]={0},Time=0,ans=0;
void dfs(int x,int p){
    int i,r,is=0,add=0;
    low[x]=v[x]=++Time;
    for(i=0;i<(int)s[x].size();++i){
        if(!v[r=s[x][i]]){
            dfs(r,x),++add;
            low[x]=std::min(low[x],low[r]);
            if(v[x]<=low[r])is=1;
        }
        if(r!=p)low[x]=std::min(low[x],v[r]);
    }
    if(is)++ans;
    if(x==p&&add<2)--ans;
}
int deg[MAX_N];
int cnt[MAX_N];
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=0;i<m;i++){
        int a,b;
        scanf("%d%d",&a,&b);
        deg[--a]++;
        deg[--b]++;
        s[a].push_back(b);
        s[b].push_back(a);
    }
    for(int i=0;i<n;i++){
        if(deg[i]%2){
            puts("No");
            return 0;
        }
        cnt[deg[i]]++;
    }
    for(int i=n-1;i>=6;i--)
        if(cnt[i]){
            puts("Yes");
            return 0;
        }
    if(cnt[4]>2){
        puts("Yes");
        return 0;
    }
    dfs(0,0);
    if(ans>1){
        puts("Yes");
        return 0;
    }
    puts("No");
}