#include #include #include #define Nmax 100005 #define pb push_back using namespace std; int st[Nmax],dr[Nmax],val[Nmax],n,m,sol[Nmax],s[Nmax]; struct Edge { int nod,tip; }; vector L[Nmax]; int main() { int i,bit; Edge w; //ifstream cin("date.in"); //ofstream cout("date.out"); cin>>n>>m; for(i=1;i<=m;++i) cin>>st[i]>>dr[i]>>val[i]; for(bit=0;bit<=20;++bit) { for(i=1;i<=m;++i) { w.tip=(val[i]&(1< ::iterator it = L[i].begin();it!=L[i].end();++it) if(!(*it).tip) { if(s[(*it).nod]!=-1 && s[(*it).nod]!=s[i]) { cout<<"-1"; return 0; } else s[(*it).nod]=s[i]; } else { if(s[(*it).nod]!=-1 && s[(*it).nod]==s[i]) { cout<<"-1"; return 0; } else s[(*it).nod]=1-s[i]; } } for(i=1;i<=n;++i) if(s[i]!=s[i-1]) sol[i]+=(1<