"""simple docstring"""





import functools





def 				a_     (      _lowerCAmelCase  : str   , _lowerCAmelCase  : Optional[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'     )

       lowercase__			:		Tuple       =	set(A__     )

       @functools.cache
       def dynamic_programming(_lowerCAmelCase  : Optional[int]     ) -> 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 ...utils import is_torch_available, is_transformers_available


if is_transformers_available() and is_torch_available():
    from .pipeline_vq_diffusion import LearnedClassifierFreeSamplingEmbeddings, VQDiffusionPipeline


