



"""simple docstring"""





import functools
def   a__      ( lowerCAmelCase__      ,     lowerCAmelCase__ ):

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

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

      if len(lowerCAmelCase__ ) == 0:
            return 0

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

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

      UpperCAmelCase_     					=				set(lowerCAmelCase__ )

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


UpperCAmelCase_					=   {
    "configuration_time_series_transformer": [
        "TIME_SERIES_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "TimeSeriesTransformerConfig",
    ],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase_					=   [
      "TIME_SERIES_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
      "TimeSeriesTransformerForPrediction",
      "TimeSeriesTransformerModel",
      "TimeSeriesTransformerPreTrainedModel",
  ]


if TYPE_CHECKING:
  from .configuration_time_series_transformer import (
      TIME_SERIES_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
      TimeSeriesTransformerConfig,
  )

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_time_series_transformer import (
        TIME_SERIES_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TimeSeriesTransformerForPrediction,
        TimeSeriesTransformerModel,
        TimeSeriesTransformerPreTrainedModel,
    )

else:
  import sys

  UpperCAmelCase_					=   _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)



