#include<bits/stdc++.h>
using namespace std;
int arr[101000],n,ans=0;
int bi=1;
struct Cy{
int l,r,minn,ld,lazy;
}t[100100*4+1];
void fuckbuild(int a,int b,int k){
t[k].l=a,t[k].r=b;
if(t[k].l==t[k].r){
t[k].minn=arr[bi];
bi++;
return;
}
int m=(a+b)/2;
fuckbuild(a,m,2*k);
fuckbuild(m+1,b,2*k+1);
t[k].minn=min(t[2*k].minn,t[2*k+1].minn);
}
void fuckdevide(int k){
if(t[k].l==t[k].r){
ans+=t[k].minn-t[k].lazy;
return;
}
t[2*k].lazy+=t[k].minn;
t[2*k+1].lazy+=t[k].minn;
ans+=t[k].minn-t[k].lazy;
fuckdevide(2*k);
fuckdevide(2*k+1);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
fuckbuild(1,n,1);
fuckdevide(1);
cout<<ans;
}