



def       A_   (						__a  :					List[str]			,		__a  :					List[Any]		):

				"""simple docstring"""
				if n < 0:
								return 0
				# table[i] represents the number of ways to get to amount i
				a__					   =		[0] * (n + 1)

				# There is exactly 1 way to get to zero(You pick no coins).
				a__					   =		1

				# Pick all coins one by one and update table[] values
				# after the index greater than or equal to the value of the
				# picked coin
				for coin_val in s:
								for j in range(__a			,		n + 1		):
												table[j] += table[j - coin_val]

				return table[n]


if __name__ == "__main__":
	import doctest

	doctest.testmod()






from collections.abc import Callable

__SCREAMING_SNAKE_CASE     =	Callable[[float], float]  # type alias for a real -> real function




def 						UpperCAmelCase (    _lowerCamelCase			,     _lowerCamelCase			,     _lowerCamelCase			,     ):
			A				:       int														=    float(_lowerCamelCase     )
			while True:
						try:
									A				:       Optional[int]														=    prev_guess - function(_lowerCamelCase     ) / derivative(_lowerCamelCase     )
						except ZeroDivisionError:
									raise ZeroDivisionError("Could not find root"     ) from None
						if abs(prev_guess - next_guess     ) < 10**-5:
									return next_guess
						A				:       Any														=    next_guess




def 						UpperCAmelCase (    _lowerCamelCase     ):
			return (x**3) - (2 * x) - 5




def 						UpperCAmelCase (    _lowerCamelCase     ):
			return 3 * (x**2) - 2


if __name__ == "__main__":
							print(newton(f, fa, 3))