




"""simple docstring"""


import functools



def 	lowercase_				(			__UpperCAmelCase    ,		__UpperCAmelCase				)						->    int:

      # Validation
      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"""				)

      lowerCAmelCase__      :			Union[str, 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()











"""simple docstring"""


from .configuration_bert_masked import MaskedBertConfig
from .modeling_bert_masked import (
    MaskedBertForMultipleChoice,
    MaskedBertForQuestionAnswering,
    MaskedBertForSequenceClassification,
    MaskedBertForTokenClassification,
    MaskedBertModel,
)
from .modules import *





