package main
import (
"fmt"
)
func min(a, b int) int {
if a > b {
return b
}
return a
}
func max(a, b int) int {
if a < b {
return b
}
return a
}
func main() {
var n int
fmt.Scan(&n)
nodes := make([]int, n+1)
maxEdge := -1
for i := 0 ; i < n-1 ; i++ {
var from, to int
fmt.Scan(&from, &to)
nodes[from], nodes[to] = nodes[from] + 1, nodes[to]+1
maxEdge = max(maxEdge, max(nodes[from], nodes[to]))
}
if n == 2 {
fmt.Printf("%d %d", 1, 1)
return
}
index := 1
for nodes[index] == maxEdge {
index++
}
fmt.Printf("%d %d", maxEdge-1, index)
}