#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mx = 1e6 + 5;
struct T
{
int l, r;
} tree[mx];
int len = 0;
void dfs(int root, int h)
{
len = max(len, h);
if (tree[root].l != 0)
dfs(tree[root].l, h + 1);
else if (tree[root].r != 0)
dfs(tree[root].r, h + 1);
return;
}
signed main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
int l, r;
cin >> l >> r;
tree[i].l = l;
tree[i].r = r;
}
dfs(1, 1);
cout << len;
return 0;
}