https://www.luogu.org/problem/P3146
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#define ll long long
using namespace std;
const int NN=300;
int n,f[NN][NN],ans;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&f[i][i]);
for(int l=2;l<=n;l++)
for(int i=1;i<=n-l+1;i++){
int j=i+l-1;
for(int k=i;k<j;k++)
if(f[i][k]==f[k+1][j])
f[i][j]=max(f[i][k]+1,f[i][j]);
}
for(int l=1;l<=n;l++)
for(int i=1;i<=n-l+1;i++){
int j=i+l-1;
ans=max(ans,f[i][j]);
}
printf("%d\n",ans);
return 0;
}