#include <bits/stdc++.h>
using namespace std;
const int MAXN=3e5+101;
int n,f[MAXN][60],ans=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
f[i][x]=i;
}
for(int i=2;i<=60;i++){
for(int j=1;j<=n;j++){
if(f[j][i-1]&&f[f[j][i-1]+1][i-1])f[j][i]=f[f[j][i-1]+1][i-1],ans=max(ans,i);
}
}
cout<<ans;
return 0;
}
14行的if判断不加就WA,看了题解加上就AC