import os, sys, bisect, copy
from collections import defaultdict, Counter, deque
from functools import lru_cache   #use @lru_cache(None)
if os.path.exists('in.txt'): sys.stdin=open('in.txt','r')
if os.path.exists('out.txt'): sys.stdout=open('out.txt', 'w')
#
def input(): return sys.stdin.readline()
def mapi(arg=0): return map(int if arg==0 else str,input().split())
#------------------------------------------------------------------



n = int(input())
gr = defaultdict(list)
x = 0
level = {}
path = {}
ans = [0]*(2*n)
for i in range(n-1):
    u,v = mapi()
    gr[u].append([v,i])
    gr[v].append([u,i])
flag = True
for i in range(1,n):
    if len(gr[i])>2:
        flag = False
if flag:
    for i in range(n-1):
        print(i)
else:
    cent = -1
    for i in range(1,n+1):
        if len(gr[i])>2:
            cent = i
            break
    cnt = 1
    for i in gr[cent]:
        idx = i[1]
        ans[idx] = cnt
        cnt+=1
    for i in range(n-1):
        if ans[i]==0:
            ans[i] = cnt
            cnt+=1
    for i in range(n-1):
        print(ans[i]-1)
