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)
}