/**
* Coded by : Harsh vardhan
**/
#include<bits/stdc++.h>
using namespace std;
void harsh(){
long long n,x;cin>>n>>x;
vector<long long> price(n), pages(n);
for(long long i = 0; i < n; i++) cin>>price[i];
for(long long i = 0; i < n; i++) cin>>pages[i];
// dp[i][j] = max pages can be bought at first i index and in coin j
vector<vector<long long>> dp(n+1, vector<long long> (x+1,0));
for(long long i = 0; i < n; i++){
for(long long coin = 0; coin <= x; coin++){
// Don't Buy the current book
if(i > 0 ) dp[i][coin] = dp[i-1][coin];
// Buy the current book
long long temp = coin - price[i];
if(temp >= 0){
if(i>0) dp[i][coin] = max(dp[i][coin], pages[i] + dp[i-1][temp]);
else dp[i][coin] = max(dp[i][coin], pages[i]);
}else{
if(i>0) dp[i][coin] = max(dp[i][coin], dp[i-1][coin]);
else dp[i][coin] = max(dp[i][coin], 0ll);
}
}
}
cout<<dp[n-1][x];
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
harsh();
return 0;
}