#include<cstdio>
int main()
{
int n,f[16] = {0},h = 1;
scanf("%d",&n);
f[1]=1;
int a,b;
for(int i = 1;i <= n;++ i)//左右结点的深度(若存在)=当前结点的深度+1
{
scanf("%d%d",&a,&b);
if(a!=0)f[a]=f[i]+1;
if(b!=0)f[b]=f[i]+1;
}
for(int i = 1;i <= n;++ i)//寻找最大深度
if(f[i]>h)
h=f[i];
int k = 0,c = 1;
for(int i = 1;i <= n;++ i)//根据每一层的结点数比较找出最大宽度
{
for(int j = 1;j <= n;++ j)
if(f[j]==i)
k++;
if(k>c) c=k;
k=0;
}
printf("%d %d",c,h);
return 0;
}