

def  _snake_case		(snake_case_					:     int  )							->		int:
  if not isinstance(SCREAMING_SNAKE_CASE_    ,       SCREAMING_SNAKE_CASE_  ):
    raise ValueError('double_factorial() only accepts integral values'  )
  if n < 0:
    raise ValueError('double_factorial() not defined for negative values'  )
  return 1 if n <= 1 else n * double_factorial(n - 2  )


if __name__ == "__main__":
      import doctest

      doctest.testmod()












def        A__						(							SCREAMING_SNAKE_CASE_				,							SCREAMING_SNAKE_CASE_		) ->  Union[str, Any]:
		if n < 0:
				return 0
		# table[i] represents the number of ways to get to amount i
		lowerCamelCase :			int    		=[0] * (n + 1)

		# There is exactly 1 way to get to zero(You pick no coins).
		lowerCamelCase :			List[Any]    		=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(SCREAMING_SNAKE_CASE_				,							n + 1		):
						table[j] += table[j - coin_val]

		return table[n]


if __name__ == "__main__":
				import doctest

				doctest.testmod()

