local n = io.read("*n") local a, b = {}, {} local edge = {} local parent = {} local ccnt, w, score = {}, {}, {} for i = 1, n do edge[i] = {} parent[i] = 0 ccnt[i] = 0 w[i] = 1 score[i] = 0 end for i = 1, n - 1 do a[i], b[i] = io.read("*n", "*n") table.insert(edge[a[i]], i) table.insert(edge[b[i]], i) end local tasks = {1} for i = 1, n do local src = tasks[i] for j = 1, #edge[src] do local ej = edge[src][j] local dst = a[ej] + b[ej] - src if parent[src] ~= dst then table.insert(tasks, dst) parent[dst] = src ccnt[src] = ccnt[src] + 1 end end end local t2 = {} for i = 1, n do if ccnt[i] == 0 then table.insert(t2, i) end end local bias = 0 for i = 1, n do local src = t2[i] for j = 1, #edge[src] do local ej = edge[src][j] local dst = a[ej] + b[ej] - src if parent[src] == dst then w[dst] = w[dst] + w[src] if src < dst then bias = bias + 1 score[src] = score[src] - 1 else score[src] = score[src] + 1 end ccnt[dst] = ccnt[dst] - 1 if ccnt[dst] == 0 then table.insert(t2, dst) end break end end end for i = 1, n do local src = tasks[i] for j = 1, #edge[src] do local ej = edge[src][j] local dst = a[ej] + b[ej] - src if parent[src] ~= dst then score[dst] = score[dst] + score[src] end end end for i = 1, n do score[i] = score[i] + bias end print(table.concat(score, "\n"))