#include <bits/stdc++.h>
using namespace std;
int part(int* r, int low, int hight) { //划分函数
int i = low, j = hight, pivot = r[low]; //基准元素
while (i < j) {
while (i<j && r[j]>pivot) j--; //从右向左开始找一个 小于等于 pivot的数值
if (i < j) swap(r[i++], r[j]); //r[i]和r[j]交换后 i 向右移动一位
while (i < j && r[i] <= pivot) i++; //从左向右开始找一个 大于 pivot的数值
if (i < j) swap(r[i], r[j--]); //r[i]和r[j]交换后 i 向左移动一位
}
return i; //返回最终划分完成后基准元素所在的位置
}
void Quicksort(int* r, int low, int hight) {
int mid;
if (low < hight) {
mid = part(r, low, hight); // 返回基准元素位置
Quicksort(r, low, mid - 1); // 左区间递归快速排序
Quicksort(r, mid+1, hight); // 右区间递归快速排序
}
}
int main() {
int a[10001];
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
Quicksort(a, 0, n - 1);
for (int i = 0; i < n; i++) cout << a[i] << " ";
return 0;
}