#include <bits/stdc++.h>
#define N 100001
using namespace std;
int A[N];
vector<int> win[N];

int dfs(int pos,int dep){
  if(win[pos].size()==0) return 0;
  vector<int> res;
  for(int i=0;i<win[pos].size();i++)
    res.push_back(dfs(win[pos][i],dep+1)); 
  
  sort(res.begin(),res.end(),greater<int>());
  int mx=0;
  for(int i=0;i<res.size();i++){
    mx=max(mx,1+i+res[i]);
  }
    return mx;
}

int main(){
  int n;
  cin>>n;
  for(int i=0;i<n-1;i++)cin>>A[i],win[--A[i]].push_back(i+1);
  
  cout<<dfs(0,0)<<endl;
  return 0;
}
