


'''simple docstring'''
import random


def 			_lowercase       (				UpperCamelCase__       :					int			):
   __A  :		Dict       =			num - 1
   __A  :		Union[str, Any]       =			0

   while s % 2 == 0:
      __A  :		Any       =			s // 2
      t += 1

   for _ in range(5			):
      __A  :		Any       =			random.randrange(2,				num - 1			)
      __A  :		Optional[Any]       =			pow(__A,				__A,				__A			)
      if v != 1:
         __A  :		str       =			0
         while v != (num - 1):
            if i == t - 1:
               return False
            else:
               __A  :		List[str]       =			i + 1
               __A  :		Tuple       =			(v**2) % num
   return True


def 			_lowercase       (				UpperCamelCase__       :					int			):




   if num < 2:
      return False

   __A  :		Any       =			[
       2,
       3,
       5,
       7,
       11,
       13,
       17,
       19,
       23,
       29,
       31,
       37,
       41,
       43,
       47,
       53,
       59,
       61,
       67,
       71,
       73,
       79,
       83,
       89,
       97,
       101,
       103,
       107,
       109,
       113,
       127,
       131,
       137,
       139,
       149,
       151,
       157,
       163,
       167,
       173,
       179,
       181,
       191,
       193,
       197,
       199,
       211,
       223,
       227,
       229,
       233,
       239,
       241,
       251,
       257,
       263,
       269,
       271,
       277,
       281,
       283,
       293,
       307,
       311,
       313,
       317,
       331,
       337,
       347,
       349,
       353,
       359,
       367,
       373,
       379,
       383,
       389,
       397,
       401,
       409,
       419,
       421,
       431,
       433,
       439,
       443,
       449,
       457,
       461,
       463,
       467,
       479,
       487,
       491,
       499,
       503,
       509,
       521,
       523,
       541,
       547,
       557,
       563,
       569,
       571,
       577,
       587,
       593,
       599,
       601,
       607,
       613,
       617,
       619,
       631,
       641,
       643,
       647,
       653,
       659,
       661,
       673,
       677,
       683,
       691,
       701,
       709,
       719,
       727,
       733,
       739,
       743,
       751,
       757,
       761,
       769,
       773,
       787,
       797,
       809,
       811,
       821,
       823,
       827,
       829,
       839,
       853,
       857,
       859,
       863,
       877,
       881,
       883,
       887,
       907,
       911,
       919,
       929,
       937,
       941,
       947,
       953,
       967,
       971,
       977,
       983,
       991,
       997,
   ]

   if num in low_primes:
      return True

   for prime in low_primes:
      if (num % prime) == 0:
         return False

   return rabin_miller(__A			)


def 			_lowercase       (				UpperCamelCase__       :					int = 1024			):




   while True:
      __A  :		Tuple       =			random.randrange(2 ** (keysize - 1),				2 ** (keysize)			)
      if is_prime_low_num(__A			):
         return num


if __name__ == "__main__":
 UpperCAmelCase_ :     Union[str, Any]								=      generate_large_prime()
 print(('Prime number:', num))
 print(('is_prime_low_num:', is_prime_low_num(num)))










'''simple docstring'''
from __future__ import annotations


def 			_lowercase       (				UpperCamelCase__       :					list,				UpperCamelCase__       :					int,				UpperCamelCase__       :					int,				UpperCamelCase__       :					int			):
 __A  :		Dict       =			[]
 __A     ,__A  :		Dict       =			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  :		Optional[Any]       =			result + left + right
 return input_list


def 			_lowercase       (				UpperCamelCase__       :					list			):
 if len(UpperCamelCase__			) <= 1:
  return input_list
 __A  :		Any       =			list(UpperCamelCase__			)

 # iteration for two-way merging
 __A  :		Dict       =			2
 while p <= len(UpperCamelCase__			):
  # getting low, high and middle value for merge-sort of single list
  for i in range(0,				len(UpperCamelCase__			),				UpperCamelCase__			):
   __A  :		Union[str, Any]       =			i
   __A  :		Tuple       =			i + p - 1
   __A  :		Union[str, Any]       =			(low + high + 1) // 2
   __A  :		Tuple       =			merge(UpperCamelCase__,				UpperCamelCase__,				UpperCamelCase__,				UpperCamelCase__			)
  # final merge of last two parts
  if p * 2 >= len(UpperCamelCase__			):
   __A  :		Optional[int]       =			i
   __A  :		str       =			merge(UpperCamelCase__,				0,				UpperCamelCase__,				len(UpperCamelCase__			) - 1			)
   break
  p *= 2

 return input_list


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






