#include <bits/stdc++.h>

using namespace std;

const int MAXN = 200005;
const long long INF = 1e15;

int n;
long long a[MAXN];
long long D[MAXN];
int L[MAXN], R[MAXN];
bool used[MAXN];
long long ans[MAXN];

int main() {
    ios_base::sync_with_stdio(0); 
    cin.tie(0); 
    cout.tie(0);
    
    if (!(cin >> n)) return 0;
    
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    
    sort(a + 1, a + 1 + n);

    D[0] = INF;
    D[n] = INF;
    for (int i = 1; i < n; i++) {
        D[i] = a[i+1] - a[i];
        L[i] = i - 1;
        R[i] = i + 1;
    }
    L[0] = -1; 
    R[n] = n + 1;

    priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq;

    for (int i = 1; i < n; i++) {
        pq.push({D[i], i});
    }

    long long current_cost = 0;
    for (int k = 1; k <= n / 2; k++) {
        while (used[pq.top().second]) {
            pq.pop();
        }
        
        long long v = pq.top().first;
        int id = pq.top().second;
        pq.pop();

        current_cost += v;
        ans[k] = current_cost;

        int l = L[id];
        int r = R[id];

        used[l] = true;
        used[r] = true;

        D[id] = D[l] + D[r] - D[id];
        pq.push({D[id], id});

        L[id] = L[l];
        R[id] = R[r];

        if (L[id] >= 0) R[L[id]] = id;
        if (R[id] <= n) L[R[id]] = id;
    }

    for (int k = 1; k <= n / 2; k++) {
        cout << ans[k] << (k == n / 2 ? "" : " ");
    }
    cout << "\n";
    
    return 0;
}
