def    a__       (						__UpperCamelCase = 6_0_0_8_5_1_4_7_5_1_4_3 ):

      try:
            SCREAMING_SNAKE_CASE_      =     int(__UpperCamelCase )
      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." )
      SCREAMING_SNAKE_CASE_      =     2
      SCREAMING_SNAKE_CASE_      =     0
      if n == 2:
            return 2
      while n > 2:
            while n % i != 0:
                  i += 1
            SCREAMING_SNAKE_CASE_      =     i
            while n % i == 0:
                  SCREAMING_SNAKE_CASE_      =     n // i
            i += 1
      return int(__UpperCamelCase )


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



from functools import lru_cache


@lru_cache
def    a__       (						__UpperCamelCase ):
      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()


