import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in);
int n = scanner.nextInt();
int W = scanner.nextInt();
int[] weights = new int[n];
int[] values = new int[n];
for (int i = 0; i < n; i++) {
weights[i] = scanner.nextInt();
}
for (int i = 0; i < n; i++) {
values[i] = scanner.nextInt();
}
int[][] dp = new int[n + 1][W + 1];
for (int i = 1; i <= n; i++) {
for (int w = 0; w <= W; w++) {
if (weights[i - 1] <= w) {
dp
[i
][w
] = Math.
max(dp
[i
- 1][w
], dp
[i
- 1][w
- weights
[i
- 1]] + values
[i
- 1]); } else {
dp[i][w] = dp[i - 1][w];
}
}
}
scanner.close();
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS5sYW5nLk1hdGg7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICAKICAgICAgICBpbnQgbiA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgIGludCBXID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgCiAgICAgICAgaW50W10gd2VpZ2h0cyA9IG5ldyBpbnRbbl07CiAgICAgICAgaW50W10gdmFsdWVzID0gbmV3IGludFtuXTsKICAgICAgICAKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICB3ZWlnaHRzW2ldID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIHZhbHVlc1tpXSA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpbnRbXVtdIGRwID0gbmV3IGludFtuICsgMV1bVyArIDFdOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBmb3IgKGludCB3ID0gMDsgdyA8PSBXOyB3KyspIHsKICAgICAgICAgICAgICAgIGlmICh3ZWlnaHRzW2kgLSAxXSA8PSB3KSB7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bd10gPSBNYXRoLm1heChkcFtpIC0gMV1bd10sIGRwW2kgLSAxXVt3IC0gd2VpZ2h0c1tpIC0gMV1dICsgdmFsdWVzW2kgLSAxXSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRwW2ldW3ddID0gZHBbaSAtIDFdW3ddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkcFtuXVtXXSk7CiAgICAgICAgCiAgICAgICAgc2Nhbm5lci5jbG9zZSgpOwogICAgfQp9