
import functools
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_     )				->		int:

			# Validation
			if not isinstance(SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_     ) or not all(isinstance(SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_     ) for day in days     ):
						raise ValueError('The parameter days should be a list of integers'     )

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

			if len(SCREAMING_SNAKE_CASE_     ) == 0:
						return 0

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

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

			lowerCAmelCase__      :      str         =		set(SCREAMING_SNAKE_CASE_     )

			@functools.cache
			def dynamic_programming(SCREAMING_SNAKE_CASE_     ) -> 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()

import os
from distutils.util import strtobool
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_     )				->		Optional[Any]:
			for e in env_keys:
						lowerCAmelCase__      :      Union[str, Any]         =		int(os.environ.get(SCREAMING_SNAKE_CASE_       ,							-1     )     )
						if val >= 0:
									return val
			return default
def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_=False     )				->		List[str]:
			lowerCAmelCase__      :      Optional[int]         =		os.environ.get(SCREAMING_SNAKE_CASE_       ,							str(SCREAMING_SNAKE_CASE_     )     )
			return strtobool(SCREAMING_SNAKE_CASE_     ) == 1  # As its name indicates `strtobool` actually returns an int...







def  lowerCAmelCase__			(  SCREAMING_SNAKE_CASE_       ,							SCREAMING_SNAKE_CASE_="no"     )				->		List[str]:
			lowerCAmelCase__      :      Optional[int]         =		os.environ.get(SCREAMING_SNAKE_CASE_       ,							str(SCREAMING_SNAKE_CASE_     )     )
			return value