#include<iostream>
using namespace std;
void quickSort(int arr[],int length);
void quickSort(int arr[], int L, int R);
int* partition(int arr[], int L, int R);
void swap(int arr[], int a,int b);
int main()
{
int N;
cin >> N;
int arr[100005];
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
quickSort(arr, N);
for (int i = 0; i < N; i++)
{
cout << arr[i] <<" ";
}
return 0;
}
void quickSort(int arr[], int length)
{
if (arr == NULL || length < 2)
{
return;
}
quickSort(arr, 0, length - 1);
}
void quickSort(int arr[], int L, int R)
{
if (L < R)
{
int mid =rand()%(R - L + 1) + L;
swap(arr, mid, R);
int* p = partition(arr, L, R);
quickSort(arr, L, p[0] - 1);
quickSort(arr, p[1] + 1, R);
}
}
int * partition(int arr[], int L, int R)
{
int less = L - 1;
int more = R;
while (L < more)
{
if (arr[L] < arr[R])
{
swap(arr, L++, ++less);
}
else if (arr[L] > arr[R])
{
swap(arr, L, --more);
}
else
{
L++;
}
}
swap(arr, more, R);
int result[2] = { less + 1,more };
return result;
}
void swap(int arr[], int a,int b)
{
int x = arr[a];
arr[a] = arr[b];
arr[b] = x;
}