#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
queue<int> l;
vector<int> t[101];
vector<int> chu[101];
int a[101],ru[101],du[101],ceng[101];
int main(){
int n,u,v;
cin>>n;
for(int i=1;i<n;i++){
cin>>u>>v;
ru[v]++;
chu[u].push_back(v);
t[v].push_back(u);
}
int be=1;
while(ru[be])be++;
cin>>u>>v;
l.push(be);
du[be]=1;
int ma=0;
while(!l.empty()){
int x=l.front();
a[x]++;
l.pop();
if(1){
for(int i=0;i<chu[x].size();i++){
if(!a[chu[x][i]]){
l.push(chu[x][i]);
du[chu[x][i]]=du[x]+1;
ma=max(du[chu[x][i]],ma);
ceng[du[chu[x][i]]]++;
}
}
}
}
cout<<ma<<endl;
ma=0;
for(int i=1;i<=n;i++)ma=max(ma,ceng[i]);
cout<<ma<<endl;
memset(a,0,sizeof(a));
l.push(u);
a[u]=1;
while(!l.empty()){
int x=l.front();
l.pop();
if(a[x]){
for(int i=0;i<t[x].size();i++){
if(!a[t[x][i]]){
l.push(t[x][i]);
a[t[x][i]]=a[x]+2;
if(t[x][i]==v){
cout<<a[t[x][i]];
break;
}
}
}
for(int i=0;i<chu[x].size();i++){
if(!a[chu[x][i]]){
l.push(chu[x][i]);
a[chu[x][i]]=a[x]+1;
if(chu[x][i]==v){
cout<<a[chu[x][i]]-1;
break;
}
}
}
}
}
return 0;
}