#include <cstdio>
#include <algorithm>
#include <vector>
#define N 100005
using namespace std;
int n, d[N], t[N];
vector<int> g[N];

void f(int p) {
	int i, sz=g[p].size();
	for(i=0; i<sz; i++) f(g[p][i]);
	for(i=0; i<sz; i++) t[i] = d[g[p][i]];
	sort(t, t+sz);
	for(i=0; i<sz; i++) d[p] = max(d[p], t[i]) + 1;
}

int main() {
	scanf("%d", &n);
	for(int i=2, t; i<=n; i++) scanf("%d", &t), g[t].push_back(i);
	f(1);
	printf("%d\n", d[1]);
	return 0;
}