#include <iostream>
using namespace std;
int main() {
int n, m;
cin>>n>>m;
int a[n], b[n];
for (int i=0; i<n; i++)
cin>>a[i];
for(int i=0; i<n; i++)
cin>>b[i];
int dp[m+1]={0,};
for(int i=0; i<n; i++){
for(int j=m-a[i]; j>=0; j--){
if(dp[j]>0 or j==0)
if(dp[j+a[i]]<dp[j]+b[i])
dp[j+a[i]]=dp[j]+b[i];
}
}
int mx=dp[1];
for(int i=0; i<=m; i++)
mx=max(mx,dp[i]);
cout<<mx;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgbiwgbTsKCWNpbj4+bj4+bTsKCWludCBhW25dLCBiW25dOwoJZm9yIChpbnQgaT0wOyBpPG47IGkrKykKCQljaW4+PmFbaV07Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspCgkJY2luPj5iW2ldOwoJaW50IGRwW20rMV09ezAsfTsKCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJZm9yKGludCBqPW0tYVtpXTsgaj49MDsgai0tKXsKCQkJaWYoZHBbal0+MCBvciBqPT0wKQoJCQlpZihkcFtqK2FbaV1dPGRwW2pdK2JbaV0pCgkJCQlkcFtqK2FbaV1dPWRwW2pdK2JbaV07CgkJfQoJfQoJaW50IG14PWRwWzFdOwoJZm9yKGludCBpPTA7IGk8PW07IGkrKykKCQlteD1tYXgobXgsZHBbaV0pOwoJY291dDw8bXg7CglyZXR1cm4gMDsKfQ==