#include <stdio.h>
struct tree{
int level;
int p;
}T[1000001];
int main()
{
int n , i ;
int dep = 1;
int lchild , rchild;
scanf("%d",&n);
T[0].level = 0;
T[1].level = 1;
T[1].p = 0;
for(i = 1 ; i <= n ; i ++)
{
scanf("%d%d",&lchild,&rchild);
if(lchild != 0)
{
T[lchild].p = i;
T[lchild].level = T[i].level + 1;
}
if(rchild != 0)
{
T[rchild].p = i;
T[rchild].level = T[i].level + 1;
}
}
for(i = 1 ; i <= n ; i ++)
{
T[i].level = T[T[i].p].level + 1;
dep = T[i].level > dep ? T[i].level : dep;
}
if(dep == 1) dep = 4;
printf("%d",dep);
return 0;
}