#include<iostream>
using namespace std;
void print(int a[], int n)
{
for(int j= 0; j<n; j++)
{
cout<<a[j] <<" ";
}
}
void quickSort(int a[], int low ,int high)
{
/********************begin***********************/
if (low < high) {
int pivot = a[low]; // 选择第一个元素为基准值
int i = low + 1; // 从基准值之后的第一个元素开始遍历
int j = high; // 从最后一个元素开始遍历
while (i <= j) {
// 从左边找到第一个大于基准值的元素
while (i <= j && a[i] < pivot) {
i++;
}
// 从右边找到第一个小于基准值的元素
while (i <= j && a[j] > pivot) {
j--;
}
// 交换找到的两个元素
if (i <= j) {
swap(a[i], a[j]);
i++;
j--;
}
}
// 将基准值放到正确的位置上
swap(a[low], a[j]);
// 递归地对基准值两边的子数组进行快速排序
quickSort(a, low, j - 1);
quickSort(a, j + 1, high);
}
/********************end *************************/
}
int main()
{
int n;
cin>>n;
int *a = new int[n];
for (int i=0;i<n;i++)
{
cin>>a[i];
}
/********************begin***********************/
quickSort(a, 0, n-1);
print(a, n);
delete[] a;
return 0;
/********************end *************************/
}