
"""simple docstring"""
import functools
def 				a__   (   a   :				Union[str, Any]       ,     a   :				List[Any]		):

  """simple docstring"""







  if not isinstance(lowerCamelCase_       ,     lowerCamelCase_		) or not all(isinstance(lowerCamelCase_       ,     lowerCamelCase_		) for day in days		):
    raise ValueError("The parameter days should be a list of integers"		)

  if len(lowerCamelCase_		) != 3 or not all(isinstance(lowerCamelCase_       ,     lowerCamelCase_		) for cost in costs		):
    raise ValueError("The parameter costs should be a list of three integers"		)

  if len(lowerCamelCase_		) == 0:
    return 0

  if min(lowerCamelCase_		) <= 0:
    raise ValueError("All days elements should be greater than 0"		)

  if max(lowerCamelCase_		) >= 366:
    raise ValueError("All days elements should be less than 366"		)

  _snake_case     :						Optional[Any]						=   set(lowerCamelCase_		)

  @functools.cache
  def dynamic_programming(a   :				List[str]		) -> int:
    if index > 365:
      return 0

    if index not in days_set:
      return dynamic_programming(index + 1		)

    return min(
        costs[0] + dynamic_programming(index + 1		)       ,     costs[1] + dynamic_programming(index + 7		)       ,     costs[2] + dynamic_programming(index + 30		)       ,     )

  return dynamic_programming(1		)


if __name__ == "__main__":
    import doctest

    doctest.testmod()



"""simple docstring"""
def 				a__   (   a   :				int		):

  """simple docstring"""







  if not isinstance(a       ,     a		):
    raise TypeError("Input value must be an 'int' type"		)

  _snake_case     :						Union[str, Any]						=   0
  while number:
    position += 1
    number >>= 1

  return position


if __name__ == "__main__":
    import doctest

    doctest.testmod()

