n = int(input())
node = []
for i in range(n):
l, r = map(int, input().split())
node.append([l, r])
class BinaryTree:
def __init__(self, key):
self.key = key
self.leftChild = None
self.rightChild = None
Tree = BinaryTree(1)
def FirstSweep(T):
if T.key == 0:
return
else:
index = T.key - 1
l_key = node[index][0]
r_key = node[index][1]
l_tree = BinaryTree(l_key)
T.leftChild = l_tree
r_tree = BinaryTree(r_key)
T.rightChild = r_tree
FirstSweep(T.leftChild)
FirstSweep(T.rightChild)
def CalDepth(T):
if T.key == 0:
return 0
else:
return max(CalDepth(T.leftChild), CalDepth(T.rightChild)) + 1
FirstSweep(Tree)
print(CalDepth(Tree))