
'''simple docstring'''


import functools




def lowercase_	(   _lowercase			,       _lowercase				)     ->							int:
					'''simple docstring'''

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

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

					if len(a__				) == 0:
										return 0

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

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

					lowerCamelCase_					:      str     =		set(a__				)

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


from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__lowercase							:   str					=     {
    '''configuration_mctct''': ['''MCTCT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''MCTCTConfig'''],
    '''feature_extraction_mctct''': ['''MCTCTFeatureExtractor'''],
    '''processing_mctct''': ['''MCTCTProcessor'''],
}


try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__lowercase							:   str					=     [
					    '''MCTCT_PRETRAINED_MODEL_ARCHIVE_LIST''',
					    '''MCTCTForCTC''',
					    '''MCTCTModel''',
					    '''MCTCTPreTrainedModel''',
					]


if TYPE_CHECKING:
					from .configuration_mctct import MCTCT_PRETRAINED_CONFIG_ARCHIVE_MAP, MCTCTConfig
					from .feature_extraction_mctct import MCTCTFeatureExtractor
					from .processing_mctct import MCTCTProcessor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_mctct import MCTCT_PRETRAINED_MODEL_ARCHIVE_LIST, MCTCTForCTC, MCTCTModel, MCTCTPreTrainedModel

else:
					import sys

					__lowercase							:   Union[str, Any]					=     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)


