#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int n, wed = 0, maxn = 1;
struct node {
int le = 0;
int ri = 0;
int fa = 0;
int cen = 1;
}al[200];
int search_fa(int p,int q) {
if (p == q)return p;
if (p == 1 || q == 1)return 1;
(al[p].cen <= al[q].cen) ? search_fa(p, al[q].fa) : search_fa(al[p].fa, q);
}
int main() {
cin >> n;
int tem1, tem2 = 0, p, q;
for (int i = 1; i < n; i++) {
cin >> tem1;
if (al[tem1].le)cin >> al[tem1].ri;
else cin >> al[tem1].le;
al[al[tem1].le].cen = al[al[tem1].ri].cen = al[tem1].cen + 1;
al[al[tem1].le].fa = al[al[tem1].ri].fa = tem1;
maxn = max(maxn, al[tem1].cen + 1);
}
tem1 = 1;
for (int i = 1; i <= n; i++) {
if (al[i].cen == tem1)tem2++;
else {
tem1++;
wed = max(wed, tem2);
tem2 = 1;
}
}
wed = max(wed, tem2);
cin >> p >> q;
int fa = search_fa(p, q);
cout << maxn << endl << wed << endl;
int lon = (al[p].cen - al[fa].cen) * 2 + al[q].cen - al[fa].cen;
cout << lon << endl;
return 0;
}