#include <iostream>
#include <cassert>

using namespace std;
#define N 1000
int a[N];
int *_one_process(int *_begin, int *_end){
    int temp = *_begin;
    int len = _end - _begin;
    int *left = _begin, *right = _end;
    for (int *p = _begin + 1; p <= _end; p++) {
        if (*p <= temp) {
            swap(*left++, *p);
        } else {
            swap(*right--, *p);
        }
    }
    assert(left == right);
    *left = temp;
    return left;
}

void _fastsort(int *_begin, int *_end) {
    if (_begin >= _end)
        return;
    int *middle = _one_process(_begin, _end);
    _fastsort(_begin, middle - 1);
    _fastsort(middle + 1, _end);
}

void fast_sort(int *a, int len) {
    _fastsort(a, a + len - 1);
}

int main()
{
    int n;
    cin >> n;
    for (int i = 0 ; i < n; i++) cin >> a[i];
    fast_sort(a, n);
    for (int i = 0; i < n; i++) cout << a[i] << " ";
    cout << endl;
    return 0;
}