#include<stdio.h>
#define max 100000
int main()
{
int n,i,j;
int a[max]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
Qsort(a,0,n-1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
void Qsort(int a[],int low,int high)
{
if(low<high)
{
int x;
x=partition(a,low,high);
Qsort(a,low,x-1);
Qsort(a,x+1,high);
}
}
int partition(int a[], int low, int high)
{
int mid = low + (high - low) / 2;
if (a[low] > a[high])
{
swap(a, low, high);
}
if (a[mid] > a[high])
{
swap(a, high, mid);
}
if (a[mid] > a[low])
{
swap(a, mid, low);
}
int pivotkey = a[low];
while (low < high)
{
while (low < high && a[high] >= pivotkey)
{
high--;
};
swap(a, low, high);
while (low < high && a[low] <= pivotkey)
{
low++;
}
swap(a, low, high);
}
return low;
}
void swap(int a[],int low,int high)
{
int temp;
temp=a[low];
a[low]=a[high];
a[high]=temp;
}