#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i,n,m) for(int i=(n);i<(m);i++)
#define REP(i,n) FOR(i,0,n)
#define REPR(i,n) for(int i=(n);i>=0;i--)
#define all(vec) vec.begin(),vec.end()
using vi=vector<int>;
using vvi=vector<vi>;
using vl=vector<ll>;
using vvl=vector<vl>;
using P=pair<int,int>;
using PP=pair<int,P>;
using Pl=pair<ll,ll>;
using PPl=pair<ll,Pl>;
using vs=vector<string>;
#define fi first
#define se second
#define pb push_back
template<class T>bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;}
template<class T>bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;}
const ll MOD=1000000007LL;
const int INF=1<<30;
const ll LINF=1LL<<60;
int main(){
    int n;
    cin>>n;
    vl vec(n);
    REP(i,n){
        cin>>vec[i];
    }
    if(n==2){
        cout<<abs(vec[0]-vec[1])<<endl;
        return 0;
    }
    priority_queue<ll> q1;
    priority_queue<ll,vl,greater<ll>> q2;
    if(n%2){
        REP(i,n){
            q1.push(vec[i]);
            q2.push(vec[i]);
        }
        ll s1=0;
        ll l,r;
        l=r=q1.top();
        q1.pop();
        REP(i,(n-1)/2){
            if(i%2==0){
                ll x,y;
                x=q2.top();q2.pop();
                y=q2.top();q2.pop();
                s1+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }else{
                ll x,y;
                x=q1.top();q1.pop();
                y=q1.top();q1.pop();
                s1+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }
        }
        q1=priority_queue<ll>();q2=priority_queue<ll,vl,greater<ll>>();
        REP(i,n){
            q1.push(vec[i]);
            q2.push(vec[i]);
        }
        l=r=q2.top();q2.pop();
        ll s2=0;
        REP(i,(n-1)/2){
            if(i%2){
                ll x,y;
                x=q2.top();q2.pop();
                y=q2.top();q2.pop();
                s2+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }else{
                ll x,y;
                x=q1.top();q1.pop();
                y=q1.top();q1.pop();
                s2+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }
        }
        cout<<max(s1,s2)<<endl;
    }else{
        REP(i,n){
            q1.push(vec[i]);
            q2.push(vec[i]);
        }
        ll s1=0;
        ll l,r;
        l=q1.top();q1.pop();s1+=abs(q2.top()-l);
        r=q1.top();q1.pop();s1+=abs(q2.top()-r);
        q2.pop();
        REP(i,(n-2)/2){
            if(i%2==0){
                ll x,y;
                x=q2.top();q2.pop();
                y=q2.top();q2.pop();
                s1+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }else{
                ll x,y;
                x=q1.top();q1.pop();
                y=q1.top();q1.pop();
                s1+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }
        }
        q1=priority_queue<ll>();q2=priority_queue<ll,vl,greater<ll>>();
        REP(i,n){
            q1.push(vec[i]);
            q2.push(vec[i]);
        }
        ll s2=0;
        l=q2.top();q2.pop();s2+=abs(q1.top()-l);
        r=q2.top();q2.pop();s2+=abs(q1.top()-r);
        q1.pop();  
        REP(i,(n-2)/2){
            if(i%2){
                ll x,y;
                x=q2.top();q2.pop();
                y=q2.top();q2.pop();
                s2+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }else{
                ll x,y;
                x=q1.top();q1.pop();
                y=q1.top();q1.pop();
                s2+=max(abs(l-x)+abs(r-y),abs(r-x)+abs(l-y));
                l=x;
                r=y;
            }
        }
        cerr<<s1<<" "<<s2<<endl;
        cout<<max(s1,s2)<<endl;
    }
    return 0;
}

Measured memory_bytes: 3916