#include <stdio.h>
#include <stdlib.h>
#define MAX 999999
void Sort(int* a, int* temp, int low, int high);
void GuiBing(int* a, int* temp, int low, int high);
int main(void)
{
int num;
int i;
scanf("%d", &num);
int* temp = (int*)malloc(sizeof(int)*num);
int* a = (int*)malloc(sizeof(int)*num);
for (i = 0; i <= num - 1; i++) {
scanf("%d", &(a[i]));
}
Sort(a, temp, 0, num-1);
for (i = 0; i <= num - 1; i++) {
printf("%d ", a[i]);
}
return 0;
}
void Sort(int* a, int* temp, int low, int high)
{
int len = high - low + 1;
if (len <= 1) {
return;
}
else {
Sort(a, temp, low, low + len / 3);
Sort(a, temp, low + len / 3 + 1, low + len * 2 / 3);
Sort(a, temp, low + len * 2 / 3 + 1, high);
GuiBing(a, temp, low, high);
return;
}
}
void GuiBing(int* a, int* temp, int low, int high)
{
int m, posi, i, j, len = high - low + 1, k;
m = MAX;
for (j = 1, k = low; j <= len; j++, k++) {
for (i = low; i <= high; i++) {
if( a[i] < m ) {m = a[i]; posi = i; }
}
a[posi] = MAX;
temp[k] = m;
m = MAX;
}
for (i = low; i <= high; i++) {
a[i] = temp[i];
}
}