#include <iostream>
#include <vector>
using namespace std;
int n,m,d[100000],z=0;
vector<int> v[100000];
bool b[100000];
void f(int x, int y){
    if(x==y){
        z++;
        return;
    }
    b[x]=true;
    for(int i=0;i<v[x].size();i++){
        if(!b[v[x][i]]){
            f(v[x][i], y);
        }
    }
}
int main(void){
    cin>>n>>m;
    for(int i=0;i<m;i++){
        int a,b;
        cin>>a>>b;
        a--;
        b--;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    int u=0;
    for(int i=0;i<n;i++){
        d[i]=v[i].size();
        if(d[i]%2==1){
            cout<<"No"<<endl;
            return 0;
        }
        if(d[i]==6)u=3;
        if(d[i]==4)u=min(3, u+1);
    }
    if(u<2){
        cout<<"No"<<endl;
        return 0;
    }
    if(u==2){
        int x=-1,y;
        for(int i=0;i<n;i++){
            if(d[i]==4){
                if(x==-1)x=i;
                else y=i;
            }
        }
        fill(b, b+n, false);
        b[x]=true;
        for(int i=0;i<v[x].size();i++){
            if(!b[v[x][i]]){
                f(v[x][i], y);
            }
        }
        if(z==4){
            cout<<"No"<<endl;
            return 0;
        }
    }
    cout<<"Yes"<<endl;
}
