#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
vector<int> g[2017];
int N, a, X;
int dfs(int u) {
  int S = 1;
  for (auto &h : g[u]) S = max(S, dfs(h) + 1);
  return S;
}
int main(void) {
  scanf("%d", &N);
  for (int i(0); i < N; i++) {
    scanf("%d", &a);
    if (~a) g[--a].push_back(i);
  }
  for (int i(0); i < N; i++) X = max(X, dfs(i));
  printf("%d\n", X);
  return 0;
}
