from collections import deque N, M = map(int, input().split()) ABY = [list(map(int, input().split())) + [int(input())] for _ in range(M)] BY = [[] for _ in range(N)] for a, b, y in ABY: BY[a-1].append((b-1, y)) BY[b-1].append((a-1, y)) que = deque() ans = [0] * N seen = [False] * N for i in range(N): if seen[i]: continue que.append(i) while que: n = que.popleft() for b, y in BY[n]: if seen[b]: if ans[n] ^ ans[b] != y: print(-1) exit() else: ans[b] = ans[n] ^ y seen[b] = True que.append(b) print("\n".join(str(a) for a in ans))