#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void print(int *data, int length) {
for (int i = 0; i < length; ++i) {
if (i > 0) {
printf(" ");
}
printf("%d", data[i]);
}
printf("\n");
}
// 请在下面实现归并排序的函数 merge_sort
void merge_sort(int *data,int l,int r)
{
if(l==r)
{
return;
}
int mid=(l+r)/2;
merge_sort(data,l,mid);
merge_sort(data,mid+1,r);
int temp[r-l+1];
int x=l,y=mid+1,loc=0;
while(x<=mid || y<=r)
{
if(x<=mid && (y>r || data[x]<=data[y]))
{
temp[loc]=data[x];
x++;
}
else
{
temp[loc]=data[y];
y++;
}
loc++;
}
for(int i=l;i<=r;i++)
{
data[i]=temp[i-l];
}
}
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
merge_sort(arr, 0, n - 1);
print(arr, n);
return 0;
}