#include<bits/stdc++.h>
using namespace std;

int n, m, deg[101000];
vector<int>G[101000];

bool dfs(int x,int fff,int s,int t){
    if (x==s) return 0;
    if (x==t) return 1;
    for (auto y:G[x])
        if (y!=fff)
            return dfs(y,x,s,t);
}

bool check4(){
    vector<int>vec;
    for (int i=1;i<=n;++i)
        if (deg[i]==4){
            vec.push_back(i);
        }
    if (vec.size()<2) return 0;
    if (vec.size()>2) return 1;
    for (auto o:G[vec[0]])
        if (!dfs(o,vec[0],vec[0],vec[1]))
            return 1;
    return 0;
}

int main(){
    cin>>n>>m;
    for (int i=1;i<=m;++i){
        int x, y; cin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
        ++deg[x]; ++deg[y];
    }
    for (int i=1;i<=n;++i)
        if (deg[i]&1){
            puts("No"); return 0;
        }
    if (*max_element(deg+1,deg+n+1)>=6||check4()){
        puts("Yes");
    }else{
        puts("No");
    }
}