


"""simple docstring"""






import math
from decimal import Decimal, getcontext



def 			A__		(					_UpperCAmelCase    :      int = 4_00_00_00	)							->	int:

	'''simple docstring'''


	try:
		snake_case__  :						Optional[Any]		=      int(_UpperCAmelCase	)
	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."	)
	snake_case__  :						List[str]		=      1_00
	snake_case__  :						Tuple		=      (Decimal(5	) ** Decimal(0.5	) + 1) / Decimal(2	)

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


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









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

     # There is exactly 1 way to get to zero(You pick no coins).
     __UpperCamelCase       				=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()





