#include"bits/stdc++.h"
using namespace std;
#define LL long long
#define REP(i, n) for(int (i)=0; (i)<(n); (i)++)
#define PB push_back
#define MP make_pair
#define all(x) x.begin(),x.end()

int N,M;
LL c[100005] = {};
vector<int> edge[100005];
int st;
bool ok = false;
void dfs(int now, int moto){
	if(now != st && c[now] == 4) return;
	for(int i=0; i<edge[now].size(); i++){
		if(edge[now][i] == moto) continue;
		if(edge[now][i] == st){
			ok = true;
			return;
		}
		dfs(edge[now][i],now);
		if(ok) return;
	}
}
int main(){
	cin >> N >> M;
	for(int i=0; i<M; i++){
		int A,B;
		cin >> A >> B;
		A--; B--;
		edge[A].PB(B);
		edge[B].PB(A);
		c[A]++;
		c[B]++;
	}

	LL f = 0;
	bool only = true;
	for(int i=0; i<N; i++){
		if(c[i] > 0 && c[i]%2 == 0){
			f += c[i]/2-1;
			if(c[i] != 2 && c[i] != 4) only = false;
		}
		else{
			cout << "No" << endl;
			return 0;
		}
	}
	if(f < 2){
		cout << "No" << endl;
		return 0;
	}
	if(only && f==2){
		for(int i=0; i<N; i++){
			if(c[i] == 4){
				st = i;
				dfs(i,-1);
				if(ok) cout << "Yes" << endl;
				else cout << "No" << endl;
				return 0;
			}
		}
		
	}

	
	cout << "Yes" << endl;

	return 0;
}