#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<queue>
#define in cin
#define out cout
#define abs(x) ((x>0)?(x):(-(x)))
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
#define FOR(i, a, b) for(int i = a; i <= b; ++i)
#define DOWNFOR(i, a, b) for(int i = a; i >= b; --i)
#define FOREACH(i, t) for (typeof(t.begin()) i = t.begin(); i != t.end(); ++i)
#define ll long long
using namespace std;
const int Nmax = 100005;
int Ans[Nmax];
int v[Nmax],s[Nmax];
int T[Nmax];
int N,M;
struct initq{
    int x,y,val;
} Q[Nmax];
struct upd{
    int x,y;
} R[2][Nmax];int size[2];
vector<int> G[Nmax];
int Query(int x){
    int R,y;
    for(R=x;R!=T[R];R=T[R]);
    while(x!=T[x]){
        y=T[x];
        T[x]=R;
        x=y;
    }
    return R;
}
void Unite(int a,int b){
    a=Query(a);
    b=Query(b);
    if(a!=b) T[b]=a;
}
void Flip(int x,int p){
    s[x]=p;
    for(vector<int>::iterator it=G[x].begin();it!=G[x].end();++it){
        if(s[*it]==-1) Flip(*it,!p);
    }
}
void Reset(){
    size[0]=size[1]=0;
    FOR(i,0,N) G[i].clear(),T[i]=i,s[i]=-1;
    memset(v,0,sizeof(v));
}
void Proc(){
    int X,Y;
    FOR(i,1,size[0]){
        X=R[0][i].x;
        Y=R[0][i].y;
        Unite(X-1,Y);
    }
    FOR(i,1,size[1]){
        X=R[1][i].x;
        Y=R[1][i].y;
        X=Query(X-1);
        Y=Query(Y);
        G[X].push_back(Y);
        G[Y].push_back(X);
    }
    FOR(i,0,N){
        int x=Query(i);
        if(s[x]==-1) Flip(x,0);
        s[i]=s[x];
    }
    FOR(i,1,N) if(s[i]!=s[i-1]) v[i]=1;
}
int main(){
    #ifndef ONLINE_JUDGE
    ifstream in("test.in");
    ofstream out("test.out");
    #endif
    in>>N>>M;
    FOR(i,1,M) in>>Q[i].x>>Q[i].y>>Q[i].val;
    for(int e=1;e<=(1<<20);e<<=1){
        Reset();
        upd u;int Val;
        FOR(i,1,M){
            u.x=Q[i].x;
            u.y=Q[i].y;
            Val=(Q[i].val&e)>0;
            R[Val][++size[Val]]=u;
        }
        Proc();
        FOR(i,1,N) Ans[i]+=e*v[i];
    }
    FOR(i,1,N) out<<Ans[i]<<' ';
    return 0;
}