
def 					lowerCAmelCase__     (    SCREAMING_SNAKE_CASE_	)							->						int:
			if number != int(UpperCAmelCase_	):
						raise ValueError('factorial() only accepts integral values'	)
			if number < 0:
						raise ValueError('factorial() not defined for negative values'	)
			lowerCAmelCase__ : Tuple   =						1
			for i in range(1			,				number + 1	):
						value *= i
			return value
def 					lowerCAmelCase__     (    SCREAMING_SNAKE_CASE_	)							->						str:
			if not isinstance(UpperCAmelCase_			,				UpperCAmelCase_	):
						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()

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


'''simple docstring'''

def  UpperCamelCase(	UpperCAmelCase_ = 1_00      ):
 UpperCAmelCase			:      Optional[Any]		   =					[[0 for _ in range(UpperCAmelCase_      )] for _ in range(m + 1      )]
 for i in range(m + 1      ):
  UpperCAmelCase			:      Optional[int]		   =					1

 for n in range(m + 1      ):
  for k in range(1    ,			UpperCAmelCase_      ):
   memo[n][k] += memo[n][k - 1]
   if n > k:
    memo[n][k] += memo[n - k - 1][k]

 return memo[m][m - 1] - 1


if __name__ == "__main__":
 print(solution(int(input("Enter a number: ").strip())))




