//
// main.cpp
// hnoi2002营业额统计
//
// Created by Candy on 28/11/2016.
// Copyright © 2016 Candy. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define pa t[x].fa
#define lc t[x].ch[0]
#define rc t[x].ch[1]
const int N=1e5+5,INF=1e9+233;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();}
return x*f;
}
struct node{
int ch[2],fa,v,w,size;
}t[N];
int cnt,root;
inline int wh(int x){return t[pa].ch[1]==x;}
inline void update(int x){t[x].size=t[lc].size+t[rc].size+t[x].w;}
inline int nw(int v){
cnt++;t[cnt].v=v;t[cnt].ch[0]=t[cnt].ch[1]=t[cnt].fa=0;
t[cnt].w=t[cnt].size=1;
return cnt;
}
inline void rotate(int x){
int f=t[x].fa,g=t[f].fa,c=wh(x);
if(g) t[g].ch[wh(f)]=x;
t[f].ch[c]=t[x].ch[c^1];t[t[f].ch[c]].fa=f;
t[x].ch[c^1]=f;t[f].fa=x;
t[x].fa=g;
update(f);update(x);
}
inline void splay(int x,int tar){
for(;t[x].fa!=tar;rotate(x))
if(t[pa].fa!=tar) rotate(wh(x)==wh(pa)?pa:x);
if(tar==0) root=x;
}
inline void ins(int v){
if(root==0) {root=nw(v);return;}
int x=root,last=0;
while(x!=0){
if(v==t[x].v){t[x].w++;t[x].size++;return;}
last=x;
if(v<t[x].v) x=lc;else x=rc;
}
if(v<t[last].v) t[last].ch[0]=nw(v);
else t[last].ch[1]=nw(v);
t[cnt].fa=last;update(last);
splay(cnt,0);
}
inline int spre(int v){
int x=root,ans=0;
while(x!=0){
if(v>=t[x].v) ans=x,x=rc;
else x=lc;
}
return ans;
}
inline int snxt(int v){
int x=root,ans=0;
while(x!=0){
if(v<=t[x].v) ans=x,x=lc;
else x=rc;
}
return ans;
}
int n,a,ans;
int main(int argc, const char * argv[]) {
n=read();t[0].v=INF;
n--;a=read();ans=a;ins(a);
while(n--){
a=read();
int t1=t[spre(a)].v,t2=t[snxt(a)].v,mn=INF;
if(t1!=INF) mn=min(mn,a-t1);
if(t2!=INF) mn=min(mn,t2-a);
ans+=mn;//printf("hi%d %d %d %d\n",a,t1,t2,mn);
ins(a);
}
printf("%d",ans);
return 0;
}