#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using R = double; using Data = pair < ll, vector >; templateusing min_priority_queue = priority_queue, greater>; const ll MOD = 1e9 + 7; const ll inf = 1LL << 60; struct edge { ll from; ll to; ll cost; }; typedef pairpll; #define all(x) (x).begin(),(x).end() #define rep(i,m,n) for(ll i = m;i < n;++i) #define pb push_back #define fore(i,a) for(auto &i:a) #define rrep(i,m,n) for(ll i = m;i >= n;--i) #define INF INT_MAX/2 int main() { int N; cin >> N; vectorY(N); vectorsum(N + 1); mapmp; rep(i, 0, N) { cin >> Y[i]; mp[Y[i]]++; } sort(all(Y)); rep(i, 0, N)sum[i + 1] = sum[i] + Y[i]; ll ans = inf; if (mp.size() == 1) { cout << 1 << endl; return 0; } else if(mp.size() == 2){ cout << 0 << endl; return 0; } for (ll right1 = 0; right1 <= N - 2; right1++) { ll left1 = 0; ll left2 = right1 + 1; ll right2 = N - 1; ll mid1 = (right1 + left1) / 2; ll mid2 = (right2 + left2) / 2; if (Y[mid1] == Y[mid2])continue; ll sum1 = (2 * mid1 - left1 - right1)*Y[mid1] + (sum[right1 + 1] - sum[mid1 + 1]) - (sum[mid1] - sum[left1]); ll sum2 = (2 * mid2 - left2 - right2)*Y[mid2] + (sum[right2 + 1] - sum[mid2 + 1]) - (sum[mid2] - sum[left2]); ans = min(ans, sum1 + sum2); } cout << ans << endl; return 0; }