"""simple docstring"""







from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


SCREAMING_SNAKE_CASE									=						{
    'configuration_funnel': ['FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP', 'FunnelConfig'],
    'convert_funnel_original_tf_checkpoint_to_pytorch': [],
    'tokenization_funnel': ['FunnelTokenizer'],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						SCREAMING_SNAKE_CASE									=						['FunnelTokenizerFast']

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						SCREAMING_SNAKE_CASE									=						[
						    'FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST',
						    'FunnelBaseModel',
						    'FunnelForMaskedLM',
						    'FunnelForMultipleChoice',
						    'FunnelForPreTraining',
						    'FunnelForQuestionAnswering',
						    'FunnelForSequenceClassification',
						    'FunnelForTokenClassification',
						    'FunnelModel',
						    'FunnelPreTrainedModel',
						    'load_tf_weights_in_funnel',
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						SCREAMING_SNAKE_CASE									=						[
						    'TF_FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST',
						    'TFFunnelBaseModel',
						    'TFFunnelForMaskedLM',
						    'TFFunnelForMultipleChoice',
						    'TFFunnelForPreTraining',
						    'TFFunnelForQuestionAnswering',
						    'TFFunnelForSequenceClassification',
						    'TFFunnelForTokenClassification',
						    'TFFunnelModel',
						    'TFFunnelPreTrainedModel',
						]


if TYPE_CHECKING:
						from .configuration_funnel import FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP, FunnelConfig
						from .tokenization_funnel import FunnelTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_funnel_fast import FunnelTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_funnel import (
												    FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST,
												    FunnelBaseModel,
												    FunnelForMaskedLM,
												    FunnelForMultipleChoice,
												    FunnelForPreTraining,
												    FunnelForQuestionAnswering,
												    FunnelForSequenceClassification,
												    FunnelForTokenClassification,
												    FunnelModel,
												    FunnelPreTrainedModel,
												    load_tf_weights_in_funnel,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_funnel import (
												    TF_FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST,
												    TFFunnelBaseModel,
												    TFFunnelForMaskedLM,
												    TFFunnelForMultipleChoice,
												    TFFunnelForPreTraining,
												    TFFunnelForQuestionAnswering,
												    TFFunnelForSequenceClassification,
												    TFFunnelForTokenClassification,
												    TFFunnelModel,
												    TFFunnelPreTrainedModel,
												)

else:
						import sys

						SCREAMING_SNAKE_CASE									=						_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




"""simple docstring"""







import functools


def      __lowerCAmelCase(		__UpperCAmelCase     ,__UpperCAmelCase			):






	"""simple docstring"""





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

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

	if len(__UpperCAmelCase			) == 0:
		return 0

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

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

	_lowercase :    List[Any]							=							set(__UpperCAmelCase			)

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



