import sys

def answer(n, u, v):
    #visited = [False for _ in range(n+1)] #node 0 False forever. Only 1-n of interest.
    adj_list = [[] for _ in range(n+1)] #first [] will never be filled.
    for i in range(n-1):
        adj_list[v[i]].append(u[i])
        adj_list[u[i]].append(v[i])
    leaf = [False for _ in range(n+1)]
    label = [10**6 for _ in range(n+1)]
    next_label = 0
    for i in range(1, n+1):
        if len(adj_list[i]) == 1:
            leaf[i] = True
            label[i] = next_label
            next_label += 1
    for i in range(1, n+1):
        if leaf[i] == False:
            label[i] = next_label
            next_label += 1
    for i in range(n-1):
        print(min(label[v[i]], label[u[i]]))
    
    
    return

def main():
    n = int(sys.stdin.readline())
    u = [0 for i in range(n-1)]
    v = [0 for i in range(n-1)]
    for i in range(n-1):
        u[i], v[i] = map(int, sys.stdin.readline().split())
    answer(n, u, v)
    return
main()