#include<bits/stdc++.h>
#define N 205
using namespace std;
struct node{
int to=0,nxt=0;
}E[N];
bool vis[N];
int n,head[N],cnt,ans=0;
int wid[N],depp=1,widd=1;
void add(int x,int y){
E[++cnt].to=y;
E[cnt].nxt=head[x];
head[x]=cnt;
}
void dfs(int x,int dep){
wid[dep]++;
depp=max(depp,dep);
for(int i=head[x];i;i=E[i].nxt){
int v=E[i].to;
if(v&&!vis[v]){
vis[v]=1;
dfs(v,dep+1);
}
}
}
int dfs2(int x,int y,int sum){
if(x==y) return ans+=sum;
for(int i=head[x];i;i=E[i].nxt){
int v=E[i].to;
if(v&&!vis[v]){
vis[v]=1;
dfs2(v,y,sum+1);
}
}
}
int main(){
memset(vis,0,sizeof(vis));
scanf("%d",&n);
for(int i=1;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
add(u,v),add(v,u);
}
vis[1]=1;
dfs(1,1);
for(int i=1;i<=depp;i++)widd=max(widd,wid[i]);
printf("%d\n%d\n",depp,widd);
int x,y;
scanf("%d%d",&x,&y);
memset(vis,0,sizeof(vis));
vis[x]=1;
dfs2(x,1,0);
ans*=2;
memset(vis,0,sizeof(vis));
vis[1]=1;
dfs2(1,y,0);
printf("%d",ans);
}