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

int n,m,a,b;
vector<int> adjl[100005];

int s,e;
bool started = false;

int ways(int node, int parent){
    if (node==s){
        if (started) return 0;
        started = true;
    }
    if (node==e) return 1;
    int way = 0;
    for (int x : adjl[node]){
        if (x!=parent && x!=s){
            way+=ways(x,node);
        }
    }
    return way;
}


int main(){
s = -1; e = -1;
scanf("%d%d",&n,&m);
for (int x = 0; x<m; x++){
    scanf("%d%d",&a,&b);
    a--;b--;
    adjl[a].push_back(b);
    adjl[b].push_back(a);
}

for (int x = 0; x<n; x++){
    if (adjl[x].size()%2!=0){
        printf("No");
        return 0;
    }
}

int c = 0;
for (int x = 0; x<n; x++){
    if (adjl[x].size()>=6){
        printf("Yes");
        return 0;
    }
    if (adjl[x].size()>=4){
        c++;
        if (s==-1){
            s = x;
        }
        else{
            e = x;
        }
    }
    if (c>=3){
        printf("Yes");
        return 0;
    }
}

if (ways(s,-1)==2){
    printf("Yes");
    return 0;
}
printf("No");
}
