import java.util.Scanner;
import java.util.Random;
public class 快速排序 {
static int n;
static int max=100;
static int[] a=new int[max];
static void QuickSort(int[] a,int left,int right){//快速排序
if(left<right){
int mid=Partition(a,left,right);//生成哨兵坐标,哨兵左侧均小于哨兵,哨兵右侧均大于哨兵
QuickSort(a,left,mid-1);//快排哨兵左侧
QuickSort(a,mid+1,right);//快排哨兵右侧
}
}
static int Partition(int[] a,int left,int right){//生成哨兵,使哨兵左侧小于,哨兵右侧大于
int i=left,j=right+1,temp=a[left];//标记左边界为哨兵
while(true){
while(a[++i]<temp&&i<right);//遍历直到找到大于哨兵的或到达右边界
while(a[--j]>temp);//遍历直到小于哨兵
if(i>=j)如果两个错过,则说明j右侧均大于哨兵,j左侧包括j均小于哨兵
break;
int tt=a[i];//如果没遇到过,交换
a[i]=a[j];
a[j]=tt;
}
a[left]=a[j];//交换正确的哨兵位置
a[j]=temp;
return j;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
for(int i=1;i<=n;i++)
a[i]=sc.nextInt();
QuickSort(a,1,n);
for(int i=1;i<=n;i++)
System.out.print(a[i]+" ");
}
}