from collections import defaultdict
from collections import deque
n = int(raw_input().strip())
tree = defaultdict(list)
edge = []
edge_val = dict()
for i in range(n - 1):
    a,b = map(int,raw_input().strip().split())
    tree[a].append(b)
    tree[b].append(a)
    edge.append((a,b))
root = 1
for i in range(1,n + 1):
    if len(tree[i]) <= 1:
        root = i
        break

edge_val[(root,tree[root][0])] = 0
q = deque()
visited = set()
visited.add(root)
has = False
for node in tree[root]:
    if node != root:
        q.append(node)

while len(q) != 0:
    next_node = q.popleft()
    visited.add(next_node)
    if len(tree[next_node]) > 2:
        cnt = 1
        for added in tree[next_node]:
            if cnt == 3:
                break
            if added not in visited:
                edge_val[(next_node,added)] = cnt
                cnt += 1
        has = True
        break
    else:
        for child in tree[next_node]:
            if child not in visited:
                q.append(child)
if n == 3:
    print 0
    print 1
else:
    if has:
        cnt = 3
        for each_edge in edge:
            a,b = each_edge
            #print(each_edge)
            if (a,b) in edge_val: 
                print edge_val[(a,b)]
                #print(111)
            elif (b,a) in edge_val:
                print edge_val[(b,a)] 
                #print(222)
            else:
                print cnt
                #print(333)
                cnt += 1
    else:
        cnt = 0
        for each_edge in edge:
            print cnt 
            cnt += 1

