`#include [HTML_REMOVED]
include [HTML_REMOVED]
using namespace std;
const int N = 100010;
int d[N];
int n;
int Find_min(int L,int R)
{
int res=0;
//判断边界问题
if(L == R) return d[L];
if(L > R) return 0;
int minn=1000001,k=0;
int mx=0;
for(int i=L;i<=R;i)
{
minn = min(minn,d[i]);
}
res += minn;
//区间跟新
for(int i=L;i<=R;i)
{
d[i] -= minn;
if(!d[i])
{
res += Find_min(L,i-1);
L = i+1;
}
}
if(d[R]) res += Find_min(L,R);
return res;
}
int main()
{
int maxx =0;
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>d[i];
}
cout<<Find_min(1,n)<<endl;
}
return 0;
}
//中途碰到了状态跟新的问题`