#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL int main(){ int n,m; cin>>n>>m; vector> E(n); map,int> mp; rep(i,n*3-6){ int u,v; cin>>u>>v; E[u-1].push_back(v-1); E[v-1].push_back(u-1); mp[make_pair(u-1,v-1)]=1; mp[make_pair(v-1,u-1)]=1; } vector ans(n,-1); vector ngs(n); queue Q; rep(i,n){ if(E[i].size()<=4){ rep(j,E[i].size()){ rep(k,E[i].size()){ if(j>=k)continue; int x = E[i][j],y = E[i][k]; if(mp.count(make_pair(x,y))){ Q.push(i); Q.push(x); Q.push(y); goto L; } } } } } L:; while(Q.size()>0){ int u = Q.front(); Q.pop(); if(ans[u]!=-1)continue; rep(i,4){ if((ngs[u]>>i)&1)continue; ans[u] = i; break; } rep(i,E[u].size()){ int v = E[u][i]; ngs[v] |= 1<