import java.util.*;
public class Main
{
//一次划分排序
public static void merge(int[]element,int left,int mid,int right){
int[] temp = new int[right-left+1];
int l = left;
int r = right;
int i = mid+1;
int k = 0;
//将两部分合并
while(l <= mid && r >= i){
if(element[l] < element[i]){
temp[k] = element[l];
l ++;
}else{
temp[k] = element[i];
i ++;
}
k++;
}
//右半部分先比完
if(l <= mid){
while(l <= mid){
temp[k] = element[l];
l ++;
k++;
}
}
//左半部分先比完
if(i <= r){
while(i <= r){
temp[k] = element[i];
i ++;
k ++;
}
}
for(int j=0;j < temp.length;j ++){
element[left+j] = temp[j];
}
}
public static void main (String[] args){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int num = scan.nextInt();//元素数
int[] element = new int[num];
//初始化数组
for(int i=0;i < num;i ++){
element[i] = scan.nextInt();
}
int len = 1;
while (num > len) {
for(int i=0;i < num;i += 2*len){
int left = i;
int mid = i+len-1;
int right = i+2*len-1;
//num为奇数时会越界
if(right > num-1){
right = num-1;
}
if(mid > num-1){
mid = num-1;
}
merge(element,left,mid,right);
}
len *=2;
}
for(int i=0;i < num;i ++){
if(i == num-1){
System.out.print(element[i]);
}else{
System.out.print(element[i]+" ");
}
}
System.out.println();
}
}
}