



"""simple docstring"""







def 				UpperCamelCase_    (    lowerCAmelCase__      :				int = 6008_5147_5143						)						->   Tuple:

  """simple docstring"""




  try:
    lowerCAmelCase_   :				Any								= int(_A						)
  except (TypeError, ValueError):
    raise TypeError('Parameter n must be int or castable to int.'						)
  if n <= 0:
    raise ValueError('Parameter n must be greater than or equal to one.'						)
  lowerCAmelCase_   :				Any								= 2
  lowerCAmelCase_   :				Dict								= 0
  if n == 2:
    return 2
  while n > 2:
    while n % i != 0:
      i += 1
    lowerCAmelCase_   :				int								= i
    while n % i == 0:
      lowerCAmelCase_   :				Union[str, Any]								= n // i
    i += 1
  return int(_A						)


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











from functools import lru_cache





@lru_cache
def __UpperCamelCase			(       _A  ):
						if num < 0:
												raise ValueError('''Number should not be negative.'''  )

						return 1 if num in (0, 1) else num * factorial(num - 1  )


if __name__ == "__main__":
						import doctest

						doctest.testmod()




