#include <stdio.h>
void q_sort (long*,long,long);
void swap (long*,long,long);
long partition (long*,long,long);
int main () {
long a[500010],i,n;
freopen ("algsort.in","r",stdin);
freopen ("algsort.out","w",stdout);
scanf ("%ld",&n);
for (i=0; i<n; i++) scanf ("%ld",a+i);
q_sort (a,0,n);
for (i=0; i<n-1; i++) printf ("%ld ",a[i]);
printf ("%ld\n",a[n-1]);
return 0;
}
void q_sort (long *a,long l,long r) {
if (l<r) {
int k=partition (a,l,r);
q_sort (a,l,k);
q_sort (a,k+1,r);
}
}
void swap (long *a,long x,long y) {
long z=a[x]; a[x]=a[y]; a[y]=z;
}
long partition (long *a,long l,long r) {
long p=l,q;
swap (a,(2*l+r)/3,r-1);
for (q=l; q<r-1; q++)
if (a[q]<=a[r-1]) {
swap (a,p,q);
p++;
}
swap (a,p,r-1);
return p;
}