#include <iostream>
using namespace std;
int maxPagesSum=0;
void rec(int n,int x,int*price,int*pages,int i,int priceSum,int pagesSum)
{
if(priceSum > x)
{
return;
}
if(i == n)
{
if(priceSum <= x)
{
if(maxPagesSum < pagesSum)
{
maxPagesSum = pagesSum;
}
}
return;
}
else
{
rec(n,x,price,pages,i+1,priceSum+price[i],pagesSum+pages[i]);
rec(n,x,price,pages,i+1,priceSum,pagesSum);
}
}
int main() {
int n,x;
cin>>n>>x;
int price[n];
for(int i=0;i<n;i++)
{
cin>>price[i];
}
int pages[n];
for(int i=0;i<n;i++)
{
cin>>pages[i];
}
int DP[n+1][x+1];
for(int i=0;i<=n;i++)
{
for(int j=0;j<=x;j++)
{
DP[i][j]=0;
}
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<=x;j++)
{
if(j-price[i-1] >= 0)
{
DP[i][j] = max(DP[i-1][j-price[i-1]]+pages[i-1],DP[i-1][j]);
}
else
{
DP[i][j] = DP[i-1][j];
}
}
}
cout<<DP[n][x]<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWF4UGFnZXNTdW09MDsKdm9pZCByZWMoaW50IG4saW50IHgsaW50KnByaWNlLGludCpwYWdlcyxpbnQgaSxpbnQgcHJpY2VTdW0saW50IHBhZ2VzU3VtKQp7CglpZihwcmljZVN1bSA+IHgpCgl7CgkJcmV0dXJuOwoJfQoJCglpZihpID09IG4pCgl7CgkJaWYocHJpY2VTdW0gPD0geCkKCQl7CgkJCWlmKG1heFBhZ2VzU3VtIDwgcGFnZXNTdW0pCgkJCXsKCQkJCW1heFBhZ2VzU3VtID0gcGFnZXNTdW07CgkJCX0KCQl9CgkJcmV0dXJuOwoJfQoJZWxzZQoJewoJCXJlYyhuLHgscHJpY2UscGFnZXMsaSsxLHByaWNlU3VtK3ByaWNlW2ldLHBhZ2VzU3VtK3BhZ2VzW2ldKTsKCQlyZWMobix4LHByaWNlLHBhZ2VzLGkrMSxwcmljZVN1bSxwYWdlc1N1bSk7Cgl9Cn0KCgppbnQgbWFpbigpIHsKCQoJaW50IG4seDsKCWNpbj4+bj4+eDsKCQoJaW50IHByaWNlW25dOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljaW4+PnByaWNlW2ldOwoJfQoJCglpbnQgcGFnZXNbbl07Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWNpbj4+cGFnZXNbaV07Cgl9CgkKCWludCBEUFtuKzFdW3grMV07Cglmb3IoaW50IGk9MDtpPD1uO2krKykKCXsKCQlmb3IoaW50IGo9MDtqPD14O2orKykKCQl7CgkJCURQW2ldW2pdPTA7CgkJfQoJfQoJCglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQlmb3IoaW50IGo9MDtqPD14O2orKykKCQl7CgkJCWlmKGotcHJpY2VbaS0xXSA+PSAwKQoJCQl7CgkJCQlEUFtpXVtqXSA9IG1heChEUFtpLTFdW2otcHJpY2VbaS0xXV0rcGFnZXNbaS0xXSxEUFtpLTFdW2pdKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCURQW2ldW2pdID0gRFBbaS0xXVtqXTsKCQkJfQoJCX0KCX0KCQoJY291dDw8RFBbbl1beF08PGVuZGw7CgkKCXJldHVybiAwOwp9