


def 						_UpperCAmelCase				(			SCREAMING_SNAKE_CASE__			:					list			,     SCREAMING_SNAKE_CASE__			:					list			,     SCREAMING_SNAKE_CASE__			:					int			,     SCREAMING_SNAKE_CASE__			:					int			,     SCREAMING_SNAKE_CASE__			:					int				):
     if index == number_of_items:
          return 0
     __UpperCamelCase    							=0
     __UpperCamelCase    							=0
     __UpperCamelCase    							=knapsack(SCREAMING_SNAKE_CASE__			,     SCREAMING_SNAKE_CASE__			,     SCREAMING_SNAKE_CASE__			,     SCREAMING_SNAKE_CASE__			,     index + 1				)
     if weights[index] <= max_weight:
          __UpperCamelCase    							=values[index] + knapsack(
              SCREAMING_SNAKE_CASE__			,     SCREAMING_SNAKE_CASE__			,     SCREAMING_SNAKE_CASE__			,     max_weight - weights[index]			,     index + 1				)
     return max(SCREAMING_SNAKE_CASE__			,     SCREAMING_SNAKE_CASE__				)


if __name__ == "__main__":
   import doctest

   doctest.testmod()










'''simple docstring'''




from itertools import count



def       __lowerCamelCase  (					_lowercase = 5_0		)      ->			int:
							UpperCAmelCase     :		Any							     =		[1] * min_block_length

							for n in count(_lowercase		):
														fill_count_functions.append(1		)

														for block_length in range(_lowercase	,				n + 1		):
																					for block_start in range(n - block_length		):
																												fill_count_functions[n] += fill_count_functions[
																												    n - block_start - block_length - 1
																												]

																					fill_count_functions[n] += 1

														if fill_count_functions[n] > 1_0_0_0_0_0_0:
																					break

							return n


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

