n,dis,dep,wid[101],maxw,x,y;
_Bool t[101][101],vis[101][101];
void dfs1(r,depth){
for(int i=1;i<=n;++i)
if(t[r][i]&&!vis[i][r])
vis[r][i]=1,dfs1(i,depth+1),vis[r][i]=0;
dep=depth>dep?depth:dep;
}
void dfs2(r,depth){
++wid[depth];
for(int i=1;i<=n;++i)
if(t[r][i]&&!vis[i][r])
vis[r][i]=1,dfs2(i,depth+1),vis[r][i]=0;
}
void init(){
for(int i=1;i<=n;++i)
maxw=wid[i]>maxw?wid[i]:maxw;
}
void dfs3(p,step){
if(p==y){printf("%d",step);return;}
else for(int i=1;i<=n;++i)
if(t[p][i]&&!vis[i][p])
vis[p][i]=1,dfs3(i,step+(i<p?2:1)),vis[p][i]=0;
}
main(){
scanf("%d",&n);
for(int i=0;i<n-1;++i){
int u,v;scanf("%d%d",&u,&v);
t[u][v]=t[v][u]=1;
}
scanf("%d%d",&x,&y);
dfs1(1,1);
dfs2(1,1),init();
printf("%d\n%d\n",dep,maxw);
dfs3(x,0);
}