#include<bits/stdc++.h>
using namespace std;
void stack_sort(int a[],int l,int r){
int sa[r],sb[r-l],sc[r-l];
int la=0,lb=0,lc=0;
for(int i=l;i<=r;i++)sc[++lc]=a[i];
while(1){
while(lc){
int top=sc[lc--];
if(!lb)sb[++lb]=top;
else{
if(top>=sb[lb])sb[++lb]=top;
else sa[++la]=top;
}
}
if(!la){
for(int i=1;i<=lb;i++)a[i+l-1]=sb[i];
break;
}
while(lb)sc[++lc]=sb[lb--];
while(la)sc[++lc]=sa[la--];
}
}
int main(){
int n,a[1000];
cin >>n;
for(int i=1;i<=n;i++)cin >> a[i];
stack_sort(a,1,n);
for(int i=1;i<=n;i++)cout << a[i] << " ";
}
//时间复杂度:O(n^2) 不确定
//空间复杂度:O(n)
//不稳定
//有没有大佬能解释一下原理()
//或者给出时间复杂度()