#include<iostream>
using namespace std;
struct tree{
int i;
int dete;
int left,right;
}t[105];
int n,a[105],b[105],m=1,ans=0;
int h[105],he=0,r,s,js=0;
void dfs(int x,int y)
{
if(t[x].dete==0)
return;
ans=max(ans,y);
h[y]++;
dfs(t[x].left,y+1);
dfs(t[x].right,y+1);
}
/*int mi(int x)
{
for(int =1;i<=x;i++)
m=m*2;
}*/
void zhao(int x,int y)
{
while(x!=y)
{
if(x>y)
{
for(int i=1;i<n;i++)
if(b[i]==x)
x=a[i];
js+=2;
}
else
{
for(int i=1;i<n;i++)
if(b[i]==y)
y=a[i];
js+=1;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<n;i++)
{
t[i].dete=i;
cin>>a[i]>>b[i];
if(t[a[i]].i)
t[a[i]].right=b[i];
else
{
t[a[i]].left=b[i];
t[a[i]].i++;
}
}
cin>>r>>s;
dfs(1,1);
zhao(r,s);
for(int i=1;i<=n;i++)
he=max(he,h[i]);
cout<<ans<<endl<<he<<endl<<js;
}