#include using namespace std; vector V,X; int root(int a){ if(V[a]<0) return a; int p=V[a], r=root(p); V[a]=r; X[a]^=X[p]; return r; } int merge(int r,int c,int y){ int rr=root(r), rc=root(c); if(rr==rc) return X[r]^X[c]^y; V[rc]=r; X[rc]=y^X[c]; return 0; } int N,M; int main(){ cin>>N>>M; V.assign(N,-1); X.assign(N,0); for(int i=0; i>a>>b>>y; if(merge(a-1,b-1,y)){ printf("-1\n"); return 0; } } for(int i=0; i