





#1.方法一
from itertools import chain
def bucket_sort(a, bucket_count):
min_value, max_value = min(a), max(a)
# 桶大小
bucket_size = (max_value - min_value + 1) // bucket_count
res = [[] for _ in range(bucket_count + 1)]
for x in a:
idx = (x - min_value) // bucket_size
res[idx].append(x)
# 每个桶单独排序,可以采用其他排序算法
for sublist in res:
sublist.sort()
return list(chain(*res))
# 读入一个整数n
n = int(input())
a = list(map(int, input().split()))
a = bucket_sort(a, min(n, 10000))
print(' '.join(map(str, a)))
#2.方法二
def BucketSort(a, bucketcount):
minvalue, maxvalue = min(a), max(a) # 找到列表中的最小值和最大值
bucketsize = (maxvalue - minvalue + 1) // bucketcount # 计算每个桶的大小
res = [[] for _ in range(bucketcount + 1)] # 创建一个空的桶列表
for x in a: # 遍历输入列表中的每个元素
idx = (x - minvalue) // bucketsize # 计算元素应该放入哪个桶中
res[idx].append(x) # 将元素放入对应的桶中
ans = [] # 创建一个空的结果列表
for res_x in res: # 遍历每个桶
res_x.sort() # 对桶中的元素进行排序
ans += res_x # 将排序后的结果合并到结果列表中
return ans # 返回排序后的结果列表
n = int(input()) # 读取输入的整数 n
a = list(map(int, input().split())) # 读取一行包含 n 个整数的输入,并将其转换为列表 a
a = BucketSort(a, 5) # 调用 BucketSort 函数对列表 a 进行排序
print(' '.join(map(str, a))) # 打印排序后的结果