#include <iostream>
#include <string>
using namespace std;
struct node{
int left,right,depth;
};
struct node tree[10000000];
int main(){
int n,ans=1;
cin>>n;
tree[1].depth=1;
for(int i=1;i<=n;++i){
int a,b;
cin>>a>>b;
tree[i].left=a;
tree[i].right=b;
tree[tree[i].left].depth=tree[i].depth+1;
tree[tree[i].right].depth=tree[i].depth+1;
if(tree[tree[i].left].depth>ans&&a!=0) ans=tree[tree[i].left].depth;
if(tree[tree[i].right].depth>ans&&b!=0) ans=tree[tree[i].right].depth;
}
cout<<ans;
return 0;
}