#include <bits/stdc++.h>
using namespace std;
struct node {
int id;
int layer;
};
int n;
node s[100500];
int ans = 0;
int main() {
cin >> n;
int lchild, rchild;
for (int i = 1; i <= n; ++i) {
s[i].id = i;
s[i].layer=1;
}
for (int i = 1; i <= n; ++i) {
cin >> lchild >> rchild;
if (lchild != 0) {
s[lchild].layer = s[i].layer + 1;
}
if (rchild != 0) {
s[rchild].layer = s[i].layer + 1;
}
}
for (int i = 1; i <= n; ++i) {
ans = max(ans, s[i].layer);
}
cout << ans;
return 0;
}