# -*- coding: utf-8 -*-
"""
Created on Sun Sep 12 18:35:33 2021
@author: 82103
"""
class Node:
def __init__(self, data, left_node, right_node):
self.data = data
self.left_node = left_node
self.right_node = right_node
# 중위 순회 (Inorder Traversal) : 왼쪽 노드 -> 루트 -> 오른쪽 노드
def in_order(node, depth, a): # depth : 깊이
if node.left_node != None:
x = int(node.left_node) # 왼쪽 노드
dep[x] = depth
in_order(tree[node.left_node], depth+1, a)
x = int(node.data) # 자기 자신
dep[x] = depth
a.append(x)
if node.right_node != None:
x = int(node.right_node) # 왼쪽 노드
in_order(tree[node.right_node], depth+1, a)
return a
n = int(input()) # 노드의 개수
tree = {} # dictionary 형태로 저장
for i in range(n):
data, left_node, right_node = input().split() # 노드, 왼쪽 자식, 오른쪽 자식
if left_node == "-1":
left_node = None
if right_node == "-1":
right_node = None
tree[data] = Node(data, left_node, right_node)
dep = [0]*(n+1) # 노드 i의 깊이
dep[1] = 1
order_list = in_order(tree['1'], 1, [])
o = [0]*(n+1) # 노드 i의 순서
for i in range(n):
y = order_list[i]
o[y] = i+1
i += 1
level = 1 # 너비가 가장 넓은 깊이
ran = 0 # 너비
if n > 1 :
for i in range(1, n+1): # 노드 1부터 노드 n까지
for j in range(i+1, n+1): # 노드 1부터 노드 n까지
if dep[i] == dep[j]:
tmp = o[j] - o[i] + 1
if tmp > ran:
level = dep[i]
ran = tmp
print(level, ran)