#2一直过不去,求神犇帮助
#include <bits/stdc++.h>
using namespace std;
class node {
public:
int a;
int b;
int d=1;
}tree[int(1e6+10)];
int a,b;
int n,maxx=0;
int main() {
cin>>n;
for (int i=1;i<=n;i++) {
cin>>a>>b;
tree[i].a=a;
tree[i].b=b;
tree[a].d=tree[i].d+1;
while (1) {
int aa=tree[a].a;
if (aa!=0) {
tree[aa].d=tree[a].d+1;
a=aa;
} else {
break;
}
}
tree[b].d=tree[i].d+1;
while (1) {
int bb=tree[b].b;
if (bb!=0) {
tree[bb].d=tree[b].d+1;
b=bb;
} else {
break;
}
}
}
for (int i=1;i<=n;i++) {
maxx=max(tree[i].d,maxx);
}
cout<<maxx;
return 0;
}