from __future__ import annotations



def 	__A		(      _A				,					_A				,					_A				,					_A       ):



 """simple docstring"""


 __a							=	[]
 __a							,  __a							=	input_list[low:mid], input_list[mid : high + 1]
 while left and right:
  result.append((left if left[0] <= right[0] else right).pop(0       )       )
 __a							=	result + left + right
 return input_list



def 	__A		(      _A       ):



 """simple docstring"""


 if len(_A       ) <= 1:
  return input_list
 __a							=	list(_A       )

 # iteration for two-way merging
 __a							=	2
 while p <= len(_A       ):
  # getting low, high and middle value for merge-sort of single list
  for i in range(0				,					len(_A       )				,					_A       ):
   __a							=	i
   __a							=	i + p - 1
   __a							=	(low + high + 1) // 2
   __a							=	merge(_A				,					_A				,					_A				,					_A       )
  # final merge of last two parts
  if p * 2 >= len(_A       ):
   __a							=	i
   __a							=	merge(_A				,					0				,					_A				,					len(_A       ) - 1       )
   break
  p *= 2

 return input_list


if __name__ == "__main__":
  SCREAMING_SNAKE_CASE			:						Optional[Any]				  =		input("""Enter numbers separated by a comma:\n""").strip()
  if user_input == "":
    SCREAMING_SNAKE_CASE			:						List[Any]				  =		[]
  else:
    SCREAMING_SNAKE_CASE			:						Any				  =		[int(item.strip()) for item in user_input.split(""",""")]
  print(iter_merge_sort(unsorted))



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() = }''')


