//#define _GLIBCXX_DEBUG #include #define rep(i, n) for(int i=0; i; using vs = vector; using vi = vector; using vvi = vector; template using PQ = priority_queue; template using PQG = priority_queue, greater >; const int INF = 100010001; const ll LINF = (ll)INF*INF*10; template inline bool chmax(T1 &a, T2 b) {return a < b && (a = b, true);} template inline bool chmin(T1 &a, T2 b) {return a > b && (a = b, true);} template istream &operator>>(istream &is, pair &p) { return is >> p.first >> p.second;} template ostream &operator<<(ostream &os, const pair &p) { return os << p.first << ' ' << p.second;} const int N = 2e5+10; //head int n; int a[N]; ll sum[N]; ll ans; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n; rep(i, n) cin >> a[i]; sort(a, a+n); if(n < 3) { cout << 0 << endl; return 0; } if(n == 3) { cout << max(0, a[0]+a[2]-a[1]) << endl; return 0; } rep(i, n) { sum[i+1] = sum[i] + a[i]; } int j = 0, k = n-1; for(int i = 1; i < n-1; i++) { while(j < i and a[k]-a[i] < a[i]-a[j]) { j++; k++; } chmax(ans, sum[n]-sum[k]+sum[i]-sum[j]-(ll)a[i]*(i-j)*2); k--; } j = 0, k = n-1; for(int i = 1; i < n-2; i++) { int U = (a[i]+a[i+1])>>1; while(j < i and a[k]-U < U-a[j]) { j++; k++; } chmax(ans, sum[n]-sum[k]+sum[i]-sum[j]-(ll)U*(i-j)*2); k--; } cout << ans << endl; }