/*arry[100]mergesort(s,e){s1=s;s2=(s+e)/2+1;e1=s2-1;e2=e;if(s<e){mergesort(s1,e2);mergesort(s2,e2);merge(s1,s2,e21,e2);}else return ;递归错误,把函数入口数据输出*/#include<stdio.h>int arry[100],n;int temp[55];void merge(int s1,int s2,int e1,int e2){ int i=s1,j=s2,k=0; while(i<=e1&&j<=e2){ if(arry[i]<=arry[j]){ temp[k++]=arry[i]; i++; } else { temp[k++]=arry[j]; j++; } } if(i>=e1+1&&j<=e2){ while(j<=e2) temp[k++]=arry[j++]; } else if(j>=e2+1&&i<=e1){ while(i<=e2) temp[k++]=arry[i++]; } i=0; j=s1; while(i<k-1){ arry[j++]=temp[i++]; }
}void mergesort(int s,int e){ int s1,s2,e1,e2; if(s<e){ s1=s; e1=(s+e)/2; s2=e1+1; e2=e; mergesort(s1,e1);//putchar('s'); mergesort(s2,e2); merge(s1,s2,e1,e2); //putchar('v'); } //else {putchar('T');return ;}}main(){ int i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&arry[i]); mergesort(0,n-1); for(i=0;i<n;i++) printf("%d ",arry[i]); return 0;}