
def  UpperCamelCase					(							lowerCAmelCase__	):
					'''simple docstring'''
					# if the collection is empty, returns empty
					if collection == []:
										return []

					# get some information about the collection
					lowercase					=		len(lowerCAmelCase__	)
					lowercase					=		max(lowerCAmelCase__	)
					lowercase					=		min(lowerCAmelCase__	)

					# 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				,    lowerCAmelCase__	):
										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				,    lowerCAmelCase__	)	):
										lowercase					=		collection[i]
										counting_arr[collection[i] - coll_min] -= 1

					return ordered



def  UpperCamelCase					(							lowerCAmelCase__	):
					'''simple docstring'''
					return "".join([chr(lowerCAmelCase__	) for i in counting_sort([ord(lowerCAmelCase__	) for c in string]	)]	)


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

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






class        lowercase	:




							def __init__(       self     ,A__):
												lowercase					=		val
												lowercase					=		None
												lowercase					=		None





							def 				A__   (       self     ,A__):
												if self.val:
																	if val < self.val:
																						if self.left is None:
																											lowercase					=		Node(A__)
																						else:
																											self.left.insert(A__)
																	elif val > self.val:
																						if self.right is None:
																											lowercase					=		Node(A__)
																						else:
																											self.right.insert(A__)
												else:
																	lowercase					=		val



def  UpperCamelCase					(							lowerCAmelCase__				,    lowerCAmelCase__	):
					'''simple docstring'''
					# Recursive traversal
					if root:
										inorder(root.left				,    lowerCAmelCase__	)
										res.append(root.val	)
										inorder(root.right				,    lowerCAmelCase__	)



def  UpperCamelCase					(							lowerCAmelCase__	):
					'''simple docstring'''
					# Build BST
					if len(lowerCAmelCase__	) == 0:
										return arr
					lowercase					=		Node(arr[0]	)
					for i in range(1				,    len(lowerCAmelCase__	)	):
										root.insert(arr[i]	)
					# Traverse BST in order.
					lowercase					=		[]
					inorder(lowerCAmelCase__				,    lowerCAmelCase__	)
					return res


if __name__ == "__main__":
							print(tree_sort([10, 1, 3, 2, 9, 14, 13]))




