#include<bits/stdc++.h>
using namespace std;
struct node{
int fa,lc,rc,dep;
}tree[1005000];
int main(){
int n,cnt=1,ans=-2e9;
cin>>n;
tree[1].dep=1;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
if(x==0 && y==0) continue;
tree[i].lc=x,tree[i].rc=y;
tree[tree[i].lc].fa=i,tree[tree[i].rc].fa=i;
tree[tree[i].lc].dep=tree[i].dep+1;
tree[tree[i].rc].dep=tree[i].dep+1;
ans=max(tree[tree[i].lc].dep,tree[tree[i].rc].dep);
}
cout<<ans;
return 0;
}