int v[2d5];
graph g;

void f(int i,int k){
	if(!(v[i]&1<<k)){
		v[i]|=1<<k;
		rep[g.edge[i]](j,g.es[i]){
			f(j,!k);
		}
	}
}

{
	int@n,@m,a[m],b[];
	rd((a--,b--)(m));
	g.setEdge(n,m,a,b);
	rep(i,n){
		if(!v[i]){
			f(i,0);
		}
		if(v[i]!=3){
			wt("No");
			exit(0);
		}
	}
	wt("Yes");
}