from transformers import PretrainedConfig





class 			__snake_case  (      _lowerCamelCase     ):
					__lowerCamelCase	 =       """custom"""




					def __init__(       self   ,	__UpperCamelCase=1   ,	**__UpperCamelCase		)					->  Union[str, Any]:



									'''simple docstring'''







									snake_case__ :     List[Any] 							=				attribute
									super().__init__(**__UpperCamelCase		)





class 			__snake_case  (      _lowerCamelCase     ):
					__lowerCamelCase	 =       """custom"""




					def __init__(       self   ,	__UpperCamelCase=1   ,	**__UpperCamelCase		)					->  Optional[int]:



									'''simple docstring'''







									snake_case__ :     Tuple 							=				attribute



def 			UpperCamelCase__						(    A__   )       -> int:
				if number != int(A__   ):
								raise ValueError('factorial() only accepts integral values'   )
				if number < 0:
								raise ValueError('factorial() not defined for negative values'   )
				snake_case__ :     Optional[Any] 							=				1
				for i in range(1      ,			number + 1   ):
								value *= i
				return value
def 			UpperCamelCase__						(    A__   )       -> int:
				if not isinstance(A__      ,			A__   ):
								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__					:       Any		=       int(input('''Enter a positive integer: ''').strip() or 0)
				print(F'''factorial{n} is {factorial(n)}''')


