import sys
def fastio():
    from io import StringIO
    from atexit import register
    global input
    sys.stdin = StringIO(sys.stdin.read())
    input = lambda : sys.stdin.readline().rstrip('\r\n')
    sys.stdout = StringIO()
    register(lambda : sys.__stdout__.write(sys.stdout.getvalue()))
fastio()

INF = 10**20
MOD = 10**9 + 7
I = lambda:list(map(int,input().split()))
from math import gcd
from math import ceil
from collections import defaultdict as dd, Counter
from bisect import bisect_left as bl, bisect_right as br

n, = I()
g = [[] for i in range(n)]
edges = dd(int)
d = [0] * n
for i in range(n - 1):
    x, y = I()
    x -= 1; y -= 1
    g[x].append(y)
    g[y].append(x)
    if y < x:
        x, y = y, x
    edges[(x, y)] = i
    d[x] += 1
    d[y] += 1
ans = [-1] * n
v = dd(int)
mex = 0
if n == 2:
    print(0)
    exit()
for i in range(n):
    if d[i] == 1:
        e = tuple(sorted([i, g[i][0]]))
        ans[edges[e]] = mex
        mex += 1
for i in range(n - 1):
        if ans[i] == -1:
            ans[i] = mex
            mex += 1
        print(ans[i])