#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
int x;
int y;
};
bool cmp(node& x,node& y){
return x.x<y.x;
}
node a[32800];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x;
a[i].y=i;
}
sort(a+1,a+n+1,cmp);
int ans=0;
for(int i=1;i<=n;i++){
if(a[i].y==1){
ans+=a[i].x;
continue;
}
int flagl=float('Inf'),flagr=float('Inf');
int dl=1,dr=1;
while(i-dl>0){
if(a[i-dl].y<a[i].y){
flagl=a[i].x-a[i-dl].x;
break;
}
dl++;
}
while(i+dr<n){
if(a[i+dr].y<a[i].y){
flagr=a[i+dr].x-a[i].x;
break;
}
dr++;
}
if(flagl>flagr) ans+=flagr;
else ans+=flagl;
}
cout<<ans;
return 0;
}