



'''simple docstring'''






import math
from decimal import Decimal, getcontext




def        snake_case_   (	lowerCAmelCase_ = 4000000						)->						int:





       '''simple docstring'''


       try:
              _UpperCAmelCase    :		Optional[Any]     	=					int(lowerCAmelCase_						)
       except (TypeError, ValueError):
              raise TypeError("""Parameter n must be int or castable to int."""						)
       if n <= 0:
              raise ValueError("""Parameter n must be greater than or equal to one."""						)
       _UpperCAmelCase    :		Tuple     	=					100
       _UpperCAmelCase    :		Tuple     	=					(Decimal(5						) ** Decimal(0.5						) + 1) / Decimal(2						)

       _UpperCAmelCase    :		str     	=					(math.floor(math.log(n * (phi + 2)			,  lowerCAmelCase_						) - 1						) // 3) * 3 + 2
       _UpperCAmelCase    :		Any     	=					Decimal(round(phi ** Decimal(index + 1						)						)						) / (phi + 2)
       _UpperCAmelCase    :		Tuple     	=					num // 2
       return int(lowerCAmelCase_						)


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








'''simple docstring'''






def        snake_case_   (	lowerCAmelCase_			,  lowerCAmelCase_						)->						Union[str, Any]:





       '''simple docstring'''


       if n < 0:
              return 0
       # table[i] represents the number of ways to get to amount i
       _UpperCAmelCase    :		Union[str, Any]     	=					[0] * (n + 1)

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

       return table[n]


if __name__ == "__main__":
   import doctest

   doctest.testmod()



