


# Algorithm for the pigeonhole sorting









def 							lowerCAmelCase_	(   __lowerCamelCase      ):
							__snake_case						:     Optional[Any]									=  min(__lowerCamelCase      )  # min() finds the minimum value
							__snake_case						:     Any									=  max(__lowerCamelCase      )  # max() finds the maximum value

							__snake_case						:     List[Any]									=  max_val - min_val + 1  # size is difference of max and min values plus one

							# list of pigeonholes of size equal to the variable size
							__snake_case						:     Optional[Any]									=  [0] * size

							# Populate the pigeonholes.
							for x in a:
														assert isinstance(__lowerCamelCase				,      __lowerCamelCase      ), "integers only please"
														holes[x - min_val] += 1

							# Putting the elements back into the array in an order.
							__snake_case						:     List[Any]									=  0
							for count in range(__lowerCamelCase      ):
														while holes[count] > 0:
																					holes[count] -= 1
																					__snake_case						:     Optional[Any]									=  count + min_val
																					i += 1







def 							lowerCAmelCase_	(   ):
							__snake_case						:     int									=  [8, 3, 2, 7, 4, 6, 8]
							pigeonhole_sort(__lowerCamelCase      )
							print("Sorted order is:"				,      " ".join(__lowerCamelCase      )      )


if __name__ == "__main__":
			main()


def 	__A		(      _A				,					_A       ):



 """simple docstring"""


 return x if y == 0 else greatest_common_divisor(_A				,					x % y       )



def 	__A		(      _A				,					_A       ):



 """simple docstring"""


 return (x * y) // greatest_common_divisor(_A				,					_A       )



def 	__A		(      _A = 20       ):



 """simple docstring"""


 __a							=	1
 for i in range(1				,					n + 1       ):
  __a							=	lcm(_A				,					_A       )
 return g


if __name__ == "__main__":
  print(f'''{solution() = }''')


