from sys import setrecursionlimit setrecursionlimit(10**6) n = int(input()); adj = [[] for _ in range(n)] for _ in range(n-1): u,v = map(int,input().split()) adj[u-1].append(v-1); adj[v-1].append(u-1) def dfs(v,p): if len(adj[v])==0 or v!=0 and len(adj[v])==1: return 0,0 ma = 1; mi = n for c in adj[v]: if c==p: continue x,y = dfs(c,v); ma = max(ma,y+1); mi = min(mi,x+1) return ma,mi print(*dfs(0,-1),sep="\n")