import sys
def solve():
# 標準入力からデータを読み込む
input_lines = sys.stdin.read().split('\n')
# 空行を除去して整理する
lines = [line.strip() for line in input_lines if line.strip()]
if len(lines) < 3:
return
# 1行目: ナップサックの容量 W
W = int(lines[0])
# 2行目: 各アイテムの大きさ(重さ)のリスト
weights = list(map(int, lines[1].split()))
# 3行目: 各アイテムの価値のリスト
values = list(map(int, lines[2].split()))
# アイテムの数
n = len(weights)
# DPテーブルの作成
# dp[i][j] は、i個までのアイテムを使って容量jの時に得られる最大価値
# iは 0 から n, j は 0 から W までのサイズを持つ2次元配列
dp = [[0 for _ in range(W + 1)] for _ in range(n + 1)]
# 動的計画法の実行
for i in range(1, n + 1):
item_weight = weights[i-1] # 現在のアイテムの重さ (0-indexなので-1)
item_value = values[i-1] # 現在のアイテムの価値 (0-indexなので-1)
for j in range(W + 1):
if j < item_weight:
# 容量不足で現在のアイテムが入らない場合、前の状態を引き継ぐ
dp[i][j] = dp[i-1][j]
else:
# アイテムを入れる場合と入れない場合で価値が大きい方を選ぶ
# OPT(i, j) = max( OPT(i-1, j), OPT(i-1, j - weight) + value )
dp[i][j] = max(dp[i-1][j], dp[i-1][j - item_weight] + item_value)
# 最終的な解 OPT(n, W) を出力
print(dp[n][W])
if __name__ == '__main__':
solve()
aW1wb3J0IHN5cwoKZGVmIHNvbHZlKCk6CiAgICAjIOaomea6luWFpeWKm+OBi+OCieODh+ODvOOCv+OCkuiqreOBv+i+vOOCgAogICAgaW5wdXRfbGluZXMgPSBzeXMuc3RkaW4ucmVhZCgpLnNwbGl0KCdcbicpCiAgICAKICAgICMg56m66KGM44KS6Zmk5Y6744GX44Gm5pW055CG44GZ44KLCiAgICBsaW5lcyA9IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gaW5wdXRfbGluZXMgaWYgbGluZS5zdHJpcCgpXQoKICAgIGlmIGxlbihsaW5lcykgPCAzOgogICAgICAgIHJldHVybgoKICAgICMgMeihjOebrjog44OK44OD44OX44K144OD44Kv44Gu5a656YePIFcKICAgIFcgPSBpbnQobGluZXNbMF0pCiAgICAKICAgICMgMuihjOebrjog5ZCE44Ki44Kk44OG44Og44Gu5aSn44GN44GV77yI6YeN44GV77yJ44Gu44Oq44K544OICiAgICB3ZWlnaHRzID0gbGlzdChtYXAoaW50LCBsaW5lc1sxXS5zcGxpdCgpKSkKICAgIAogICAgIyAz6KGM55uuOiDlkITjgqLjgqTjg4bjg6Djga7kvqHlgKTjga7jg6rjgrnjg4gKICAgIHZhbHVlcyA9IGxpc3QobWFwKGludCwgbGluZXNbMl0uc3BsaXQoKSkpCgogICAgIyDjgqLjgqTjg4bjg6Djga7mlbAKICAgIG4gPSBsZW4od2VpZ2h0cykKCiAgICAjIERQ44OG44O844OW44Or44Gu5L2c5oiQCiAgICAjIGRwW2ldW2pdIOOBr+OAgWnlgIvjgb7jgafjga7jgqLjgqTjg4bjg6DjgpLkvb/jgaPjgablrrnph49q44Gu5pmC44Gr5b6X44KJ44KM44KL5pyA5aSn5L6h5YCkCiAgICAjIGnjga8gMCDjgYvjgokgbiwgaiDjga8gMCDjgYvjgokgVyDjgb7jgafjga7jgrXjgqTjgrrjgpLmjIHjgaQy5qyh5YWD6YWN5YiXCiAgICBkcCA9IFtbMCBmb3IgXyBpbiByYW5nZShXICsgMSldIGZvciBfIGluIHJhbmdlKG4gKyAxKV0KCiAgICAjIOWLleeahOioiOeUu+azleOBruWun+ihjAogICAgZm9yIGkgaW4gcmFuZ2UoMSwgbiArIDEpOgogICAgICAgIGl0ZW1fd2VpZ2h0ID0gd2VpZ2h0c1tpLTFdICAjIOePvuWcqOOBruOCouOCpOODhuODoOOBrumHjeOBlSAoMC1pbmRleOOBquOBruOBpy0xKQogICAgICAgIGl0ZW1fdmFsdWUgPSB2YWx1ZXNbaS0xXSAgICAjIOePvuWcqOOBruOCouOCpOODhuODoOOBruS+oeWApCAoMC1pbmRleOOBquOBruOBpy0xKQoKICAgICAgICBmb3IgaiBpbiByYW5nZShXICsgMSk6CiAgICAgICAgICAgIGlmIGogPCBpdGVtX3dlaWdodDoKICAgICAgICAgICAgICAgICMg5a656YeP5LiN6Laz44Gn54++5Zyo44Gu44Ki44Kk44OG44Og44GM5YWl44KJ44Gq44GE5aC05ZCI44CB5YmN44Gu54q25oWL44KS5byV44GN57aZ44GQCiAgICAgICAgICAgICAgICBkcFtpXVtqXSA9IGRwW2ktMV1bal0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMg44Ki44Kk44OG44Og44KS5YWl44KM44KL5aC05ZCI44Go5YWl44KM44Gq44GE5aC05ZCI44Gn5L6h5YCk44GM5aSn44GN44GE5pa544KS6YG444G2CiAgICAgICAgICAgICAgICAjIE9QVChpLCBqKSA9IG1heCggT1BUKGktMSwgaiksIE9QVChpLTEsIGogLSB3ZWlnaHQpICsgdmFsdWUgKQogICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoZHBbaS0xXVtqXSwgZHBbaS0xXVtqIC0gaXRlbV93ZWlnaHRdICsgaXRlbV92YWx1ZSkKCiAgICAjIOacgOe1gueahOOBquinoyBPUFQobiwgVykg44KS5Ye65YqbCiAgICBwcmludChkcFtuXVtXXSkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBzb2x2ZSgp