#include<bits/stdc++.h>
using namespace std;
struct root{
int id;
int parents;
int c1,c2;
};
root a[101]={};
int ans;
int y,f;
void dfs(int x,int sum){
if(x==1){
f=1;
}
if(a[x].c1+a[x].c2==0&&f==1){
return;
}
if(x==y){
if(f==0){
sum+=2;
}else{
sum++;
}
ans=max(ans,sum);
return;
}
if(f==0){
dfs(a[x].parents,sum+2);
}else{
dfs(a[x].c1,sum++);
dfs(a[x].c2,sum++);
}
}
int main(){
long long n;
cin>>n;
a[1].parents=-1;
for(int i=1;i<=n;i++){
a[i].id=i;
}
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
a[y].parents=x;
if(a[x].c1==0){
a[x].c1=y;
}else{
a[x].c2=y;
}
}
int x;
cin>>x>>y;
int x1=-1;
for(int i=n;i>=1;i--){
if(a[i].c1+a[i].c2==0){
int xx1=1,f=a[i].parents;
while(f!=1){
xx1++;
f=a[f].parents;
}
xx1++;
x1=max(x1,xx1);
}else{
break;
}
}
int xx2=0,xx3=0;
for(int i=n;i>=1;i--){
if(a[i].c1+a[i].c2==0){
int xx1=1,f=a[i].parents;
while(f>=4){
xx1++;
f=a[f].parents;
}
if(f==2){
xx2+=xx1;
}else{
xx3+=xx1;
}
}else{
break;
}
}
dfs(x,0);
cout<<x1<<"\n"<<max(xx2,xx3)<<"\n";
cout<<ans;
return 0;
}