n=gets.to_i a=gets.split.map &:to_i f=2e9 d=(0...n).map{[f]*n} e=(0...n).map{[f]*n} d[0][n-1]=e[0][n-1]=0 n.downto(1){|k| (n-k).times{|i| d[i+1][j=i+k]=[d[i+1][j],[[d[i][j],e[i][j]+k].min,a[i]].max+1].min e[i][j-1]=[d[i][j-1],[[d[i][j]+k,e[i][j]].min,a[j]].max+1].min } } p (0...n).map{|i|[[d[i][i],e[i][i]].min,a[i]].max}.min