#include<bits/stdc++.h>
using namespace std;
int n,cnt=1,day=0,x,st,ed;
int sink[1000005];
bool bsink[1000005];
int findmax(){
int _max=0,i=0;
for(i;i<n;i++){
if(sink[i]>=_max) _max=sink[i];
}
return _max;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>sink[i];
}
x = findmax();
st=0;
ed=n;
for(int i=0;i<x;i++){
for(int l=0;l<n;l++){
if(sink[st]==0) st++;
if(sink[ed-1]==0) ed--;
if(sink[st]!=0&&sink[ed-1]!=0) break;
}
for(int j=st;j<ed;j++){
if(sink[j]==0) bsink[j]=1;
}
for(int k=st;k<ed;k++){
if(bsink[k]&&f1){
f1=0;
cnt++;
} else if(!bsink[k]&&!f1){
f1=1;
}
if(f1) sink[k]-=1;
}
day+=cnt;
cnt=1;
}
cout<<day;
return 0;
}
/AC了前八个点,T了后两个,想请大佬看看有没有办法再优化一下循环/