import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) class UF: # unionfind def __init__(self, n): self.n = n self.parent = list(range(n)) self.size = [1] * n def check(self): return [self.root(i) for i in range(self.n)] def root(self, i): inter = set() while self.parent[i]!=i: inter.add(i) i = self.parent[i] r = i for i in inter: self.parent[i] = r return r def connect(self, i, j): # 繋いだかどうかを返す ri = self.root(i) rj = self.root(j) if ri==rj: return False if depth[rj]=num: continue vals[u].append(val) ls[u].append(l) # order.append(u) for d,x,e,v in ns[u]: # if vals[v]>val+d: # vals[v] = val+d hp(h, to(val+d, l^x, v)) return vals, ls num = 10 vals, ls = dijkstra(n-1, ns) ans = [inf]*(n-1) for v in range(n-1): for i in range(len(ls[v])): if ls[v][i]!=0: ans[v] = min(ans[v], vals[v][i]) if ans[v]==inf: ans[v] = -1 write("\n".join(map(str, ans)))