from collections import defaultdict
import sys
input = sys.stdin.readline
class Graph:
    def __init__(self,v):
        self.graph = defaultdict(list)
        self.min = 0
        self.max = v-2
        self.edgeAns = defaultdict(dict)
    
    def addEdge(self,u,v):
        self.graph[u].append(v)
        self.graph[v].append(u)
    
    def dfs(self,v):
        for i in range(1,v+1):
            if(len(self.graph[i])>2):
                for j in range(3):
                    g.edgeAns[i][self.graph[i][j]] = j
                    g.edgeAns[self.graph[i][j]][i] = j
                break

    def isLinear(self,n):
        cnt = 0
        for i in range(1,n+1):
            if(len(self.graph[i])==2):
                cnt+=1
        if(cnt==n-2):
            m = 0
            for i in range(1,n+1):
                if(len(self.graph[i])==1):
                    self.edgeAns[i][self.graph[i][0]] = m
                    self.edgeAns[i][self.graph[i][0]] = m
                    m+=1
        else:
            self.dfs(n)
    
n = int(input())
g = Graph(n)
temp = []
for _ in range(n-1):
    a,b = map(int,input().split())
    g.addEdge(a,b)
    temp.append((a,b))

g.isLinear(n)
max = n-2
for i,j in temp:
    if i in g.edgeAns[j]:
        print(g.edgeAns[j][i])
    else:
        print(max)
        max-=1