#include #include #define rep(i, a, b) for (int i = a; i < b; i++) #define rrep(i, a, b) for (int i = b - 1; i >= a; i--) #define ll long long #define graph vector> #define Graph vector>> using namespace std; using namespace atcoder; using mint = modint998244353; int MOD=998244353; vector dy={0,1,0,-1},dx={1,0,-1,0}; int main(){ int n; cin>>n; vector a(n); rep(i,0,n) cin>>a[i]; set st; rep(i,0,n-2){ if(a[i]a[i+2]) st.insert(i+1); } int ans=0; while(!st.empty()){ int v=*st.begin(); st.erase(v); ans++; a[v]=min(a[v-1],a[v+1])-1; if(v-1>0&&a[v-2]a[v]) st.insert(v-1); if(v+1a[v+2]) st.insert(v+1); } cout<