#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

const int maxn=1e5;
int n, a[maxn], b[maxn];

void Qsort(int l,int r)
{
    if(r-l <= 1) return;

    copy(a+l, a+r, b);
    int pivot = b[rand() % (r - l)];
    int cnt = 0;
    for(int i=0;i<r-l;i++)
    {
        if(b[i] <= pivot)
            a[l+(cnt++)] = b[i];
        else
            a[r-(i-cnt+1)] = b[i];
    }

    for(int i=l;i<r;i++)
        if(a[i] == pivot)
         swap(a[i], a[l+cnt-1]);
    Qsort(l, l+cnt-1);
    Qsort(l+cnt, r);
}

int main()
{
    srand (time(NULL));
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    Qsort(0, n);

    for(int i=0;i<n;i++)
        cout<<a[i]<<' ';
    cout<<endl;
}