#include <bits/stdc++.h>
using namespace std;
#define REP(i,N) for(i=0;i<N;i++)
typedef long long ll;
typedef pair<int, int> P;
typedef struct{
  int first;
  int second;
  int third;
}T;

//昇順
bool comp_Se(T& l, T& r){
  return l.second < r.second;
}

vector<vector<int> > G;
int x,y;
bool dfs(int cur, int pare){
  if(cur == x && pare != -1) return true;
  if(cur == y) return false;
  bool ret = false;
  for(int & e : G[cur]){
    if(e == pare)continue;
    if(dfs(e,cur)) return true;
  }
  return false;
}

int main(void){
  int N,M;
  cin >> N >> M;
  G = vector<vector<int> >(N);
  vector<int> v(N,0);
  int i,a,b;
  REP(i,M){
    cin >> a >> b;
    v[--a]++;
    v[--b]++;
    G[a].push_back(b);
    G[b].push_back(a);
  }
  int n_6,n_4,n_2;
  n_6 = n_4 = n_2 = 0;
  REP(i,N){ if(v[i]%2){
      cout << "No" << endl;
      return 0;
    }
    if(v[i]>=6)++n_6;
    else if(v[i] == 4){
      ++n_4;
      swap(x,y);
      x = i;
    }
    else ++n_2;
  }
  if(n_6>=1 || n_4 >=3 ) cout << "Yes" << endl;
  else if(n_4 == 2){
    if(dfs(x,-1)) cout << "Yes" << endl;
    else cout << "No" << endl;
  }
  else cout << "No" << endl;
  return 0;
}
