#include<bits/stdc++.h>
using namespace std;
struct tree{
int left,right;
}T[1000100];
int ans=1;
void dfs(int k,int deep)
{
if(k==0)return;
ans=max(ans,deep);
dfs(T[k].left,deep+1);
dfs(T[k].left,deep+1);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d%d",&T[i].left,&T[i].right);
dfs(1,1);
printf("%d",ans);
return 0;
}