def counting_sort(arr):
if not arr:
return arr
maximum = max(arr)
counts = [0] * (maximum + 1)
for num in arr:
counts[num] += 1
result = []
for value, count in enumerate(counts):
result.extend([value] * count)
return result
print(counting_sort([4, 2, 2, 8, 3, 3, 1]))