






import functools





def  _a(  UpperCamelCase__				:						list[int],	UpperCamelCase__				:						list[int]							):




      '''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__							) >= 3_6_6:
            raise ValueError('''All days elements should be less than 366'''							)

      SCREAMING_SNAKE_CASE__     :				Dict									=set(UpperCamelCase__							)

      @functools.cache
      def dynamic_programming(UpperCamelCase__				:						int							) -> int:
            if index > 3_6_5:
                  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 + 3_0							),	)

      return dynamic_programming(1							)


if __name__ == "__main__":
  import doctest

  doctest.testmod()







'''simple docstring'''
from math import isqrt





def  _a(  UpperCamelCase__				:						int							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__     :				int									=[True] * max_number
      for i in range(2,	isqrt(max_number - 1							) + 1							):
            if is_prime[i]:
                  for j in range(i**2,	UpperCamelCase__,	UpperCamelCase__							):
                        SCREAMING_SNAKE_CASE__     :				Any									=False

      return [i for i in range(2,	UpperCamelCase__							) if is_prime[i]]





def  _a(  UpperCamelCase__				:						int = 1_0**8							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__     :				Tuple									=calculate_prime_numbers(max_number // 2							)

      SCREAMING_SNAKE_CASE__     :				int									=0
      SCREAMING_SNAKE_CASE__     :				int									=0
      SCREAMING_SNAKE_CASE__     :				Optional[int]									=len(UpperCamelCase__							) - 1
      while left <= right:
            while prime_numbers[left] * prime_numbers[right] >= max_number:
                  right -= 1
            semiprimes_count += right - left + 1
            left += 1

      return semiprimes_count


if __name__ == "__main__":
  print(F'''{solution() = }''')