from functools import lru_cache
@lru_cache
def       A	(    _lowercase						):
						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()












"""simple docstring"""
def 					A__				(			UpperCamelCase					,  UpperCamelCase = False       ):

							if not isinstance(UpperCamelCase					,  UpperCamelCase       ):
														A		=  F"Expected string as input, found {type(UpperCamelCase       )}"
														raise ValueError(UpperCamelCase       )
							if not isinstance(UpperCamelCase					,  UpperCamelCase       ):
														A		=  F"Expected boolean as use_pascal parameter, found {type(UpperCamelCase       )}"
														raise ValueError(UpperCamelCase       )

							A		=  input_str.split("_"       )

							A		=  0 if use_pascal else 1

							A		=  words[start_index:]

							A		=  [word[0].upper() + word[1:] for word in words_to_capitalize]

							A		=  "" if use_pascal else words[0]

							return "".join([initial_word, *capitalized_words]       )


if __name__ == "__main__":
		from doctest import testmod

		testmod()


