'''
快速排序算法
一个数组有 N 个元素,使用快速排序对其进行排序输出
'''
def quick_sort(array,length):
'''
对输入长度为length的数组array进行快速排序算法
:param array:
:param length:
:return:
'''
if length<=1:
return array
# 设定首尾指针,首尾指针所指向的元素交替有效
# 0~start指针之间的数组都是小于或等于轴点数值的元素
# end~length指针之间的元素都是大于或等于轴点数值的元素
povit_value=array[0]
start=0
end=length-1
while(start<end):
while(end>start and array[end]>=povit_value):
end-=1
if end==start:# 说明整个数组都是有序的
break
else:
# 找到的array[end]元素小于轴点数值,则应当把当前元素归到左侧子序列中
array[start]=array[end]
while(start<end and array[start]<=povit_value):
start+=1
if start==end:# 说明从0到start之间的数值都是小于轴点数值的
break
else:
array[end]=array[start]
return quick_sort(array[0:end],end)+[povit_value]+quick_sort(array[(end+1):],length-end-1)
if __name__=="__main__":
line=input()
# num=int(line.split(' ')[0])# 数组长度
line=line.split(' ')
int_array=list(map(lambda x:int(x),line))
num=int_array[0]
int_array.pop(0)# 整数数组
print(int_array)
output=quick_sort(int_array,num)
print(output)
# print(sort(int_array),'sorted')
# assert output==sorted(int_array)
output_str=''
for num in output:
output_str+=str(num)+' '
print(output_str[:-1])