#include<bits/stdc++.h>//添加虚根节点0使图变成一棵树,显然答案即为树的深度-1
using namespace std;
int n,f[10001],ans;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int p;
        cin>>p;
        if(p!=-1)
            f[i]=p;
    }
    for(int i=1;i<=n;i++){
        int tmp=i,cnt=1;
        while(f[tmp])
            tmp=f[tmp],cnt++;
        ans=max(ans,cnt);
    }
    cout<<ans;
    return 0;
}