"""simple docstring"""







import random



class  _lowerCamelCase			:







				@staticmethod
				def 							__UpperCAmelCase					( lowerCamelCase_    :       str						):

					"""simple docstring"""






					_lowercase :    Optional[Any]							=							[ord(lowerCamelCase_						) for i in text]
					_lowercase :    Dict							=							[]
					_lowercase :    str							=							[]
					for i in plain:
						_lowercase :    List[str]							=							random.randint(1			,					3_0_0						)
						_lowercase :    str							=							(i + k) * k
						cipher.append(lowerCamelCase_						)
						key.append(lowerCamelCase_						)
					return cipher, key







				@staticmethod
				def 							__UpperCAmelCase					( lowerCamelCase_    :       list[int]			,					lowerCamelCase_    :       list[int]						):

					"""simple docstring"""






					_lowercase :    Optional[int]							=							[]
					for i in range(len(lowerCamelCase_						)						):
						_lowercase :    Optional[int]							=							int((cipher[i] - (key[i]) ** 2) / key[i]						)
						plain.append(chr(lowerCamelCase_						)						)
					return "".join(lowerCamelCase_						)


if __name__ == "__main__":
						SCREAMING_SNAKE_CASE							,    SCREAMING_SNAKE_CASE									=						Onepad().encrypt('Hello')
						print(c, k)
						print(Onepad().decrypt(c, k))




"""simple docstring"""







import functools


def      __lowerCAmelCase(		__UpperCAmelCase     ,__UpperCAmelCase			):






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

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



