#include<bits/stdc++.h>
#define mod 1000000007
#define pp pair<ll,ll>
#define mp make_pair
#define ll long long
#define pb push_back
#define ff first
#define ss second
using namespace std;
ll dp[1010][1010],n,cap,wt[1010],val[1010];
int main(){
memset(dp,0,sizeof(dp));
cin>>n>>cap;
for(int i=1;i<=n;i++)
cin>>wt[i];
for(int i=1;i<=n;i++)
cin>>val[i];
for(int i=1;i<=cap;i++){
for(int j=1;j<=n;j++){
dp[i][j] = dp[i][j-1];
if(i-wt[j]>=0)
dp[i][j] = max({dp[i][j] , val[j] + dp[i-wt[j]][j-1],val[j]+dp[i-wt[j]][j]});
}
}
cout<<dp[cap][n];
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIHBwIHBhaXI8bGwsbGw+CiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxsIGRwWzEwMTBdWzEwMTBdLG4sY2FwLHd0WzEwMTBdLHZhbFsxMDEwXTsKaW50IG1haW4oKXsKCiAgICBtZW1zZXQoZHAsMCxzaXplb2YoZHApKTsKCWNpbj4+bj4+Y2FwOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJY2luPj53dFtpXTsKCWZvcihpbnQgaT0xO2k8PW47aSsrKQoJCWNpbj4+dmFsW2ldOwoJCgoJZm9yKGludCBpPTE7aTw9Y2FwO2krKyl7CiAgICAgICAgZm9yKGludCBqPTE7ajw9bjtqKyspewogICAgICAgICAgICBkcFtpXVtqXSA9IGRwW2ldW2otMV07CiAgICAgICAgICAgIGlmKGktd3Rbal0+PTApCiAgICAgICAgICAgICAgICBkcFtpXVtqXSA9IG1heCh7ZHBbaV1bal0gLCB2YWxbal0gKyBkcFtpLXd0W2pdXVtqLTFdLHZhbFtqXStkcFtpLXd0W2pdXVtqXX0pOwogICAgICAgIH0KCX0KCWNvdXQ8PGRwW2NhcF1bbl07CgkKCXJldHVybiAwOwp9