#include<bits/stdc++.h>
using namespace std;

mt19937_64 rd(time(0));
int rand(int L, int R){
    return L + rd() % (R - L + 1);
}

int n;
vector<int> arr;

vector<int> slow_merge_sort(vector<int>& arr, int length){
    if(length <= 1) return arr;
    if(length == 2){
        if(arr[0] < arr[1]) swap(arr[0], arr[1]);
        return arr;
    }

    int pivot = 3*length/4;
    int times[2]; memset(times, 0, sizeof times);
    vector<int> newVector[2];
    vector<int> resultVector;

    for(int i = 0; i < pivot; i++) newVector[0].push_back(arr[i]);
    for(int i = pivot; i < length; i++) newVector[1].push_back(arr[i]);

    newVector[0] = slow_merge_sort(newVector[0], newVector[0].size());
    newVector[1] = slow_merge_sort(newVector[1], newVector[1].size());

    while(resultVector.size() < length){
        int cur_index = 0;
        int cur_value = (int) -1e9;

        for(int i = 0; i < 2; i++){
            if(times[i] >= newVector[i].size()) continue;

            if(cur_value <= newVector[i][times[i]]){
                cur_value = newVector[i][times[i]];
                cur_index = i;
            }
        }

        resultVector.push_back(cur_value);
        times[cur_index]++;
    }

    return resultVector;
}

bool isSorted(){
    for(int i = 1; i < n; i++){
        if(arr[i - 1] < arr[i]) return 0;
    }

    return 1;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    cin >> n;
    for(int i = 0; i < n; i++){
        int value; cin >> value;
        arr.push_back(value);
    }

    while(!isSorted()){
        arr = slow_merge_sort(arr, n);
    }

    for(int i = 0; i < n; i++) cout << arr[i] << ' ';

    return 0;
}
