#include<iostream>
#include<vector>
#include<cassert>
using namespace std;
int N;
vector<int>G[2<<17];
int ans[2<<17][2];
void dfs(int u,int p)
{
	int ch=0;
	for(int v:G[u])if(v!=p)
	{
		dfs(v,u);
		ch++;
	}
	if(ch==0)ans[u][0]=ans[u][1]=0;
	else
	{
		ans[u][0]=0;
		ans[u][1]=1e9;
		for(int v:G[u])if(v!=p)
		{
			ans[u][0]=max(ans[u][0],ans[v][1]+1);
			ans[u][1]=min(ans[u][1],ans[v][0]+1);
		}
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>N;
	for(int i=1;i<N;i++)
	{
		int u,v;cin>>u>>v;
		u--,v--;
		G[u].push_back(v);
		G[v].push_back(u);
	}
	dfs(0,-1);
	cout<<ans[0][0]<<endl;
	cout<<ans[0][1]<<endl;
}