struct Gt{ ull m; int t; }; int main(){ int @N,@M; vector G(M); rep(i,M){ G[i].m=0; int @a; REP(a){ int @b; b--; G[i].m|=(1ull<=M) continue; for(int j=p+1; j>i)&1) swap(G[j],G[p]); if((G[p].m>>i)&1){ for(int j=0; j>i)&1){ G[j].m^=G[p].m; G[j].t^=G[p].t; } p++; } } rep(j,p,M) if(G[j].t!=0){ wt(-1); return 0; } rep(i,p){ rep(d,N) if((G[i].m>>d)&1){ ans[d]=G[i].t; break; } } rep(i,N) wt(ans[i]); }