




import functools
def 						SCREAMING_SNAKE_CASE__ (   lowercase						,lowercase					)  ->       int:

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

   snake_case				:    List[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()











from .glue import GlueDataset, GlueDataTrainingArguments
from .language_modeling import (
    LineByLineTextDataset,
    LineByLineWithRefDataset,
    LineByLineWithSOPTextDataset,
    TextDataset,
    TextDatasetForNextSentencePrediction,
)
from .squad import SquadDataset, SquadDataTrainingArguments





