#include<bits/stdc++.h>
using namespace std;
int n,ans=-1;
struct bl{
int left,right;
};
bl c[100001];
void dfs(int sd,int le){
if(le==0)
return ;
ans=max(ans,sd);
dfs(c[le].left,sd+1);
dfs(c[le].right,sd+1);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>c[i].left>>c[i].right;
dfs(1,1);
cout<<ans<<endl;
return 0;
}