#include <stdio.h>
struct diak
{
int tovaad;
int maxhossz=0;
bool volt = false;
};
void MaximizeLoop(diak *a, int epos, int pos, int maxhossz)
{
if (epos != pos) {
a[pos].maxhossz = maxhossz;
MaximizeLoop(a,epos,a[pos].tovaad,maxhossz);
}
}
//bool IsLoopStartPos(int len, diak* a, bool *szamolt, int pos)
//{ int cpos = pos;
// do {
// szamolt[cpos] = true;
// cpos = a[cpos].tovaad;
// } while (!szamolt[cpos]);
// return (cpos == pos);
//}
int lanchossz (diak *e, int len, diak *a, int pos, int *ringpos)
{
if (a[pos].maxhossz) {
// cout << endl;
return a[pos].maxhossz;
}
if (a[pos].volt) {
*ringpos = pos;
} else {
a[pos].volt = true;
// cout << pos << "->" << a[pos].maxhossz << ", ";
a[pos].maxhossz = lanchossz (e, len, a, a[pos].tovaad,ringpos) + 1;
if (e->maxhossz < a[pos].maxhossz) {
e->maxhossz = a[pos].maxhossz;
e->tovaad = pos;
}
// cout << pos << "->" << a[pos].maxhossz << ", ";
}
return a[pos].maxhossz;
}
//void hirmax (diak *a, int len)
//{ int i,pos,maxh=0;
// for (i=1; i<len; i++) {
// if (a[i].maxhossz>maxh) {
// maxh=a[i].maxhossz;
// pos=i;
// }
// }
// cout<<pos<<" "<<maxh<<endl;
//}
int main()
{
diak eredm;
int N;
// std::ios_base::sync_with_stdio (false); // Supposedly makes I/O faster
/**/
scanf("%d",&N);
diak a[N+1];
int i,i1,i2,i3,i4,i5,i6,i7,i8,le,step = 8;
le = N/step;
i1=1, i2=2, i3=3, i4=4, i5=5, i6=6, i7=7, i8=8;
for (i=0; i<le; i++) {
scanf("%d %d %d %d %d %d %d %d",&(a[i1].tovaad),&(a[i2].tovaad),&(a[i3].tovaad),&(a[i4].tovaad),
&(a[i5].tovaad),&(a[i6].tovaad),&(a[i7].tovaad),&(a[i8].tovaad));
i1+=step,i2+=step,i3+=step,i4+=step;
i5+=step,i6+=step,i7+=step,i8+=step;
}
for (i=i1;i<N+1;i++) {
scanf("%d",&(a[i].tovaad));
}
/*/
N = 11;
diak a[N+1] = { {0,0}, {3,0}, {1,0}, {2,0}, {3,0}, {2,0}, {5,0}, {6,0}, {5,0}, {10,0}, {11,0}, {10,0} };
/**/
eredm.tovaad = 0;
eredm.maxhossz = 0;
int ringpos = 0;
// KiirDiak(a, N);
for (int i=1; i<=N; i++) {
if (a[i].maxhossz == 0) {
// cout << endl << "Elem:" << i << endl;
lanchossz(&eredm, N+1, a, i,&ringpos);
MaximizeLoop(a, ringpos, a[ringpos].tovaad, a[ringpos].maxhossz);
// KiirDiak(a, N+1);
// cout << endl;
}
}
// cout<<eredm.tovaad<<" "<<eredm.maxhossz<<endl;
printf("%d %d",eredm.tovaad,eredm.maxhossz);
return 0;
}