import sys
input = sys.stdin.readline
def quicksort(arr):
def sort(l, r):
if l >= r:
return
mid = partition(arr, l, r)
sort(l, mid-1)
sort(mid, r)
def partition(arr, l, r):
pivot = arr[(l+r)//2]
while l <= r:
while arr[l] < pivot:
l += 1
while arr[r] > pivot:
r -= 1
if l <= r:
arr[l], arr[r] = arr[r], arr[l]
l += 1
r -= 1
return l
return sort(0, len(arr)-1)
if __name__ == '__main__':
n = int(input())
arr = []
for _ in range(n):
arr.append(int(input()))
quicksort(arr)
for num in arr:
print(num)
import sys
input = sys.stdin.readline
def merge(arr1, arr2):
i, j = 0, 0
result = []
while i < len(arr1) and j < len(arr2):
if arr1[i] < arr2[j]:
result.append(arr1[i])
i += 1
else:
result.append(arr2[j])
j += 1
while i < len(arr1):
result.append(arr1[i])
i += 1
while j < len(arr2):
result.append(arr2[j])
j += 1
return result
def mergesort(arr):
# 더 이상 쪼갤 수 없는 경우
if len(arr) <= 1:
return arr
# list 반으로 쪼개기
mid = len(arr)//2
return merge(mergesort(arr[:mid]), mergesort(arr[mid:]))
if __name__ == '__main__':
n = int(input())
arr = []
for _ in range(n):
arr.append(int(input()))
arr = mergesort(arr)
for num in arr:
print(num)