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

#define MAX 100002

int n;

int m;

int deg[MAX];

set<int> s[MAX];

vector<int> pat;

inline void eul(int b){
	while(s[b].size()){
		int node=*s[b].begin();
		s[b].erase(node);
		s[node].erase(b);
		eul(node);
	}
	pat.push_back(b);
}
deque<int> d[MAX];

int im[MAX];

int main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		a--;
		b--;
		deg[a]++;
		deg[b]++;
		s[a].insert(b);
		s[b].insert(a);
	}
	for(int i=0;i<n;i++){
		if(deg[i]%2){
			puts("No");
			return 0;
		}
	}
	eul(1);
	reverse(pat.begin(),pat.end());
	if(pat.size()<4){
		puts("No");
		return 0;
	}
	int ended=INT_MAX;
	for(int i=pat.size()-1;i>=1;i--){
		int node=pat[i];
		im[i]+=im[i+1];
		if(d[node].size()){
			if(im[d[node][0]]){
				puts("Yes");
				return 0;
			}
			if(ended<=d[node].back()){
				puts("Yes");
				return 0;
			}
			im[i]++;
			ended=min(ended,d[node][0]);
		}
		d[node].push_front(i);
	}
	puts("No");
	return 0;
}
