#include
#include<bits/stdc++.h>
using namespace std;
int main() {
int N,S;
cin>>N>>S;
int wt[N];
int val[N];
for(int i=0;i<N;i++){
int w;
cin>>w;
wt[i]=w;
}
for(int i=0;i<N;i++){
int v;
cin>>v;
val[i]=v;
}
int dp[N+1][S+1];
for(int i=0;i<=N;i++){
for(int j=0;j<=S;j++){
if(i==0 or j==0){
dp[i][j]=0;
}
else if(wt[i-1]<=j){
dp[i][j]=max(val[i-1]+dp[i-1][j-wt[i-1]],dp[i-1][j]);
}
else{
dp[i][j]=dp[i-1][j];
}
}
}
return dp[N][S];
}