#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
typedef int var;

//ifstream cin("xorgame.in");
//ofstream cout("xorgame.out");

struct Edge {var n, w;
Edge(var a, var b): n(a), w(b) {}
Edge() {}
};

const var MAXN = 100001;

var n, m;
vector<Edge> G[MAXN];
var SUM[MAXN];

bool VIZ[MAXN];

void dfs(var node) {
    VIZ[node] = 1;
    for(vector<Edge>::iterator it = G[node].begin(); it != G[node].end(); ++it) {
        Edge &e = *it;
        SUM[e.n] = SUM[node] ^ e.w;
        if(!VIZ[e.n]) {
            dfs(e.n);
        }
    }
}

int main()
{
    var n, m, a, b, c;
    cin>>n>>m;
    for(var i=1; i<=m; i++) {
        cin>>a>>b>>c;
        G[a-1].push_back(Edge(b, c));
        G[b].push_back(Edge(a-1, c));
    }

    for(var i=0; i<=n; i++) {
        if(!VIZ[i]) {
            dfs(i);
        }
    }

    for(var i=1; i<=n; i++) {
        cout<<(SUM[i] ^ SUM[i-1])<<" ";
    }

    return 0;
}