#include #define int long long using namespace std; int n; int a[2005]; int f[2005][2005]; void read(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } } void work(){ memset(f,0x3f,sizeof(f)); f[1][n]=f[n][1]=0; for(int l=n;l>1;l--){ for(int i=1;i+l-1<=n;i++){ int j=i+l-1; f[i][j]=min(f[i][j],f[j][i]+(j-i-1)); f[j][i]=min(f[j][i],f[i][j]+(j-i-1)); f[i+1][j]=min(f[i+1][j],max(f[i][j],a[i])+1); f[j-1][i]=min(f[j-1][i],max(f[j][i],a[j])+1); } } int ans=f[0][0]; for(int i=1;i<=n;i++){ ans=min(ans,max(f[i][i],a[i])); } cout<