#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > adj(2005, vector<int>(0));
int m = 1, k = 1;
void dfs(int v) {
  int l = adj[v].size();
  for (int i = 0; i < l; i++) {
    k++;
    if (k > m) m = k;
    dfs(adj[v][i]);
    k--;
  }
}
int main() {
  int n, x;
  scanf("%d", &n);
  vector<int> ar(n + 1, 0);
  for (int i = 0; i < n; i++) {
    scanf("%d", &x);
    if (x != -1) {
      adj[x].push_back(i + 1);
      ar[i + 1]++;
    }
  }
  for (int i = 0; i < n; i++) {
    if (ar[i + 1] == 0) {
      dfs(i + 1);
    }
  }
  printf("%d\n", m);
}
