


def        __lowerCAmelCase    (SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					)->  None:




      """simple docstring"""

      if target == 0:
            answer.append(path.copy()					)
      else:
            for index in range(SCREAMING_SNAKE_CASE					,					len(SCREAMING_SNAKE_CASE					)					):
                  if target >= candidates[index]:
                        path.append(candidates[index]					)
                        backtrack(SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					target - candidates[index]					,					SCREAMING_SNAKE_CASE					)
                        path.pop(len(SCREAMING_SNAKE_CASE					) - 1					)






def        __lowerCAmelCase    (SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					)->  list:




      """simple docstring"""

      snake_case_       =      []  # type: list[int]
      snake_case_       =      []  # type: list[int]
      backtrack(SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					,					0					)
      return answer






def        __lowerCAmelCase    ()->  None:




      """simple docstring"""

      print(combination_sum([-8, 2.3, 0]					,					1					)					)


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   main()



def        __lowerCAmelCase    (SCREAMING_SNAKE_CASE					)->  int:




      """simple docstring"""

      if number != int(SCREAMING_SNAKE_CASE					):
            raise ValueError('''factorial() only accepts integral values'''					)
      if number < 0:
            raise ValueError('''factorial() not defined for negative values'''					)
      snake_case_       =      1
      for i in range(1					,					number + 1					):
            value *= i
      return value






def        __lowerCAmelCase    (SCREAMING_SNAKE_CASE					)->  int:




      """simple docstring"""

      if not isinstance(SCREAMING_SNAKE_CASE					,					SCREAMING_SNAKE_CASE					):
            raise ValueError('''factorial() only accepts integral values'''					)
      if n < 0:
            raise ValueError('''factorial() not defined for negative values'''					)
      return 1 if n == 0 or n == 1 else n * factorial(n - 1					)


if __name__ == "__main__":
   import doctest

   doctest.testmod()

   UpperCAmelCase			=    int(input("""Enter a positive integer: """).strip() or 0)
   print(f'''factorial{n} is {factorial(n)}''')