def Merge(A, B): result = [] while A and B: # 当A和B都不为空时继续循环 if A[0] <= B[0]: # 比较两个列表的第一个元素 result.append(A.pop(0)) # 将A中的第一个元素添加到结果中,并从A中移除 else: result.append(B.pop(0)) # 将B中的第一个元素添加到结果中,并从B中移除 # 如果A或B中还有剩余元素,将它们添加到结果中 result.extend(A) result.extend(B) return result n = int(input()) a = list(map(int, input().split())) # 合并两个列表 def merge(left, right): result = [] i = j = 0 # 初始化两个列表的索引 while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 # 将剩余的元素添加到结果列表中 result.extend(left[i:]) result.extend(right[j:]) return result # 归并排序 def mergesort(A): if len(A) <= 1: # 如果列表长度为0或1,则直接返回 return A mid = len(A) // 2 # 使用整数除法 left = mergesort(A[:mid]) # 递归排序左半部分 right = mergesort(A[mid:]) # 递归排序右半部分 return merge(left, right) # 合并两个已排序的列表 # 输出排序后的列表 print(' '.join(map(str, mergesort(a))))