from bisect import bisect
from itertools import accumulate




def 				UpperCamelCase						(       __lowercase						: Optional[Any]						,__lowercase						: Tuple						,__lowercase						: int						,__lowercase						: Dict	):
		'''simple docstring'''




		A_		:				Dict     =      sorted(zip(lowercase__						,lowercase__	)						,key=lambda __lowercase	: x[0] / x[1]						,reverse=lowercase__	)
		A_   ,			A_		:				Tuple     =      [i[0] for i in r], [i[1] for i in r]
		A_		:				Dict     =      list(accumulate(lowercase__	)	)
		A_		:				Union[str, Any]     =      bisect(lowercase__						,lowercase__	)
		return (
		    0
		    if k == 0
		    else sum(vl[:k]	) + (w - acc[k - 1]) * (vl[k]) / (wt[k])
		    if k != n
		    else sum(vl[:k]	)
		)


if __name__ == "__main__":
	import doctest

	doctest.testmod()










def        _lowerCamelCase(	lowercase__	)						->	int:

		'''simple docstring'''







		if collection == []:
				return []

		# get some information about the collection
		__lowercase=			len(lowercase__	)
		__lowercase=			max(lowercase__	)
		__lowercase=			min(lowercase__	)

		# create the counting array
		__lowercase=			coll_max + 1 - coll_min
		__lowercase=			[0] * counting_arr_length

		# count how much a number appears in the collection
		for number in collection:
				counting_arr[number - coll_min] += 1

		# sum each position with it's predecessors. now, counting_arr[i] tells
		# us how many elements <= i has in the collection
		for i in range(1   , lowercase__	):
				__lowercase=			counting_arr[i] + counting_arr[i - 1]

		# create the output collection
		__lowercase=			[0] * coll_len

		# place the elements in the output, respecting the original order (stable
		# sort) from end to begin, updating counting_arr
		for i in reversed(range(0   , lowercase__	)	):
				__lowercase=			collection[i]
				counting_arr[collection[i] - coll_min] -= 1

		return ordered







def        _lowerCamelCase(	lowercase__	)						->	List[str]:

		'''simple docstring'''







		return "".join([chr(lowercase__	) for i in counting_sort([ord(lowercase__	) for c in string]	)]	)


if __name__ == "__main__":
	# Test string sort
	assert counting_sort_string('''thisisthestring''') == "eghhiiinrsssttt"

	lowerCAmelCase           =		input('''Enter numbers separated by a comma:\n''').strip()
	lowerCAmelCase           =		[int(item) for item in user_input.split(''',''')]
	print(counting_sort(unsorted))






