"""
题目:有n个重量分别为w={w_1,w_2,…,w_n}的物品,他们的价值分别为v={v_1,v_2,…,v_n},给定一个容量为V的背包。
设计从这些物品中选取一部分物品放入该背包的方案,每个物品要么选中要么不选中,要求选中的物品不仅能够放到背包中,并且背包内物品的总价值达到最大。
输入格式
第一行输入两个整数n、G,其中n表示物品的数量,G表示背包的容量体积。
第二行输入n个整数,整数间以空格分隔,表示n个物品的重量w_i
第三行输入n个整数,整数间以空格分隔,表示n个物品的价值v_i
输出格式
一个实数,表示能携带物品的最大价值。
输入样例
5 13
3 4 4 5 10
2 9 9 10 24
输出样例
28
"""
def knapsack(n, G, weights, values):dp = [0 for _ in range(G + 1)]for i in range(n):for j in range(G, weights[i] - 1, -1):dp[j] = max(dp[j], dp[j - weights[i]] + values[i])return dp[G]# 输入
n, G = map(int, input().split())
weights = list(map(int, input().split()))
values = list(map(int, input().split()))# 计算并输出最大价值
print(knapsack(n, G, weights, values))