#include #define rep(i,n) for(ll i=0;i<(ll)(n);i++) #define Yes cout << "Yes" << "\n" #define No cout << "No" << "\n" #define rtr0 return(0) #define all(x) x.begin(), x.end() using namespace std; //#include //using namespace atcoder; //using mint=static_modint<998244353>; //using mint=static_modint<1000000007>; ////using mint=modint; //#pragma GCC target("avx2") //#pragma GCC optimize("O3") //#pragma GCC optimize("unroll-loops") using ll=long long; using l3=__int128; using ull=unsigned long long; using ld=long double; using P=pair; const ld PI=acos(-1); templatebool chmin(T&a,T b){if(a>b){a=b;return true;}return false;} templatebool chmax(T&a,T b){if(a dx={1,0,-1,0}; const vector dy={0,1,0,-1}; const int inf=1001001001; const ll INF=1001001001001001001; ll mod=998244353; void solve(){ ll n,m;cin>>n>>m; vector> g(n); vector d(n); rep(i,m){ ll u,v;cin>>u>>v;u--;v--; g[u].insert(v); g[v].insert(u); d[u]++; d[v]++; } if(n==3){ cout<<"Yes"<,greater> pq; vector> pa(n,vector(3,-1)); rep(i,n)if(d[i]==3){ pq.push(i); ll j=0; for(auto x:g[i]){ pa[i][j]=x; j++; } } vector s; while(!pq.empty()){ auto id=pq.top();pq.pop(); s.push_back(id); for(auto nex:g[id]){ d[nex]--; g[nex].erase(id); if(d[nex]==3){ pq.push(nex); ll i=0; for(auto x:g[nex]){ pa[nex][i]=x; i++; } } } } reverse(all(s)); vector ans(n); rep(i,n){ ll id=0; set st; rep(j,4)st.insert(j+1); rep(j,3)if(st.count(ans[pa[s[i]][j]]))st.erase(ans[pa[s[i]][j]]); ans[s[i]]=*st.begin(); } //cout<>t; rep(i,t)solve(); }