



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



def 				_lowerCAmelCase      (_lowerCAmelCase):
					if not isinstance(_lowerCAmelCase				,		_lowerCAmelCase):
										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				:							List[Any]								=int(input("""Enter a positive integer: """).strip() or 0)
	print(F"factorial{n} is {factorial(n)}")







from __future__ import annotations



def 				_lowerCAmelCase      (_lowerCAmelCase):
					UpperCamelCase_											=				{1}
					UpperCamelCase_											=				[1]
					for _ in range(2				,		depth + 1):
										UpperCamelCase_											=				[*previous_coefficients, 0]
										UpperCamelCase_											=				[0, *previous_coefficients]
										UpperCamelCase_											=				[]
										for x, y in zip(_lowerCAmelCase				,		_lowerCAmelCase):
															coefficients.add(x + y)
															previous_coefficients.append(x + y)
					return coefficients



def 				_lowerCAmelCase      (_lowerCAmelCase):
					UpperCamelCase_											=				set()
					for number in unique_coefficients:
										UpperCamelCase_											=				2
										UpperCamelCase_											=				number
										while divisor**2 <= copy_number:
															UpperCamelCase_											=				0
															while copy_number % divisor == 0:
																				copy_number //= divisor
																				multiplicity += 1
															if multiplicity >= 2:
																				non_squarefrees.add(_lowerCAmelCase)
																				break
															divisor += 1

					return unique_coefficients.difference(_lowerCAmelCase)



def 				_lowerCAmelCase      (_lowerCAmelCase = 51):
					UpperCamelCase_											=				get_pascal_triangle_unique_coefficients(_lowerCAmelCase)
					UpperCamelCase_											=				get_squarefrees(_lowerCAmelCase)
					return sum(_lowerCAmelCase)


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