t = gets.to_i n = gets.to_i c_list = gets.split.map(&:to_i) v_list = gets.split.map(&:to_i) a_list = c_list + v_list list = [[t, 0, a_list]] max_manzoku = 0 loop do next_list = [] list.each do |ima| (0...n).each do |i| nokori = ima[0] - ima[2][i] next_manzoku = ima[1] + ima[2][i + n] if nokori < 0 next end if max_manzoku < next_manzoku max_manzoku = next_manzoku end if nokori > 0 next_at = ima[2].dup next_at[i + n] /= 2 next_list << [nokori, next_manzoku, next_at] end end end if next_list.empty? break end list = next_list end puts max_manzoku