#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
using namespace std;
map<int,int> f;
vector<int> v[10];
int n,i,x,y,h,ma;
void dg(int now,int hp){
if(v[now][0]==0&&v[now][1]==0) {
ma=max(ma,hp);
return ;
}
if(v[now][0]!=0) dg(v[now][0],hp+1);
if(v[now][1]!=0) dg(v[now][1],hp+1);
}
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++) f[i]=i;
for(i=1;i<=n;i++){
scanf("%d%d",&x,&y);
v[i].push_back(x);
v[i].push_back(y);
f[x]=i;
f[y]=i;
}
h=x;
while(1){
if(f[h]!=h) h=f[h];
else break;
}
dg(h,1);
printf("%d",ma);
return 0;
}