#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<string>
#include<queue>
#include<stack>
using namespace std;
#define MOD 1000000007
#define INF (1<<29)
#define LINF (1LL<<60)
#define EPS (1e-10)
typedef long long Int;
typedef pair<Int, Int> P;

void ok(){
  cout << "Yes" << endl;
  exit(0);
}

void ng(){
  cout <<  "No" << endl;
  exit(0);
}
bool used[108000];
vector<int> edge[108000];
vector<int> just4;
int cnt[108000];
int over4, a, b, n, m;
void dfs(int x){
  used[x] = true;
  for(int to: edge[x]){
    if(used[to])continue;
    dfs(to);
  }
}

int main(){
  cin >> n >> m;
  for(int i = 0;i < m;i++){
    cin >> a >> b;a--,b--;
    edge[a].push_back(b);
    edge[b].push_back(a);
    cnt[a]++;
    cnt[b]++;
  }
  for(int i = 0;i < n;i++){
    if(cnt[i] % 2 == 1)ng();
    if(cnt[i] > 4)over4++;
    if(cnt[i] == 4)just4.push_back(i);
  }
  if(over4)ok();
  if(just4.size() < 2)ng();
  if(just4.size() > 2)ok();

  used[just4[0]] = true;
  int component = 0;
  for(int i = 0;i < n;i++){
    if(used[i])continue;
    component++;
    dfs(i);
  }
  if(component == 1)ng();
  else ok();
  return 0;
}