#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int n,max1=0,a[maxn],f[maxn]={0,1};
int search(int x){
while(1){
if(f[x-1]==0){
x--;
}
else return x-1;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++){
if(a[i]==1) continue;
else f[a[i]]=f[search(a[i])]+1;
}
for(int i=1;i<=maxn;i++){
if(max1<f[i]) max1=f[i];
}
cout<<max1;
return 0;
}
过了两个点 但不知道错在哪了