#include #include #include #include using namespace std; const int INF = 1 << 30; const int MAX_N = 100100; typedef pair Rule; int N, M; vector rules[MAX_N]; int val[MAX_N]; int fin[MAX_N]; int pval[MAX_N]; int main() { cin >> N >> M; for (int i = 1, a, b, c; i <= M; i += 1) { cin >> a >> b >> c; rules[a].push_back(make_pair(b, c)); } for (int i = 1; i <= N; i += 1) { if (rules[i].empty()) continue; sort(rules[i].begin(), rules[i].end(), greater()); Rule last = rules[i].back(); rules[i].pop_back(); val[i] = last.second; fin[i] = last.first; while (!rules[i].empty()) { Rule now = rules[i].back(); rules[i].pop_back(); if (now.first != last.first) { rules[last.first + 1].push_back(Rule(now.first, now.second ^ last.second)); last = now; } } } for (int i = N; i > 0; i -= 1) { if (fin[i] == 0) { pval[i] = pval[i + 1]; continue; } int x = pval[i + 1] ^ pval[fin[i] + 1]; val[i] = val[i] ^ x; pval[i] = pval[i + 1] ^ val[i]; } for (int i = 1; i <= N; i += 1) { cout << val[i] << ' '; } return 0; }