#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
vector<int> c(n);
for (int i = 0; i < n; ++i)
{
int C;
cin >> C;
c[i] = C;
}
vector<int> l(n);
for (int i = 0; i < n; ++i)
{
int L;
cin >> L;
l[i] = L;
}
vector<vector<uint32_t>> A(n + 1, vector<uint32_t>(k + 1));
vector<vector<vector<int>>> B(n + 1, vector<vector<int>>(k + 1, vector<int>(n + 1)));
uint32_t max = 0;
for (int i = 1; i <= n; ++i)
{
for (int j = 0; j <= k; ++j)
{
uint32_t maxC = 0;
int bestO = 0;
for (int o = 1; o * c[i - 1] <= j; ++o)
{
uint32_t C = A[i - 1][j - o * c[i - 1]];
for (int p = 0; p < i; ++p)
{
int s = min(o, l[p] - B[i - 1][j - o * c[i - 1]][p]);
if(s < 0) s = 0;
C += s * c[p];
}
if (C > maxC)
{
maxC = C;
bestO = o;
}
}
A[i][j] = maxC;
B[i][j] = B[i - 1][j - bestO * c[i - 1]];
for (int p = 0; p < i; ++i)
{
int s = min(bestO, l[p] - B[i][j][p]);
if(s < 0) s = 0;
B[i][j][p] += s;
}
if (maxC > max)
{
max = maxC;
}
}
}
cout << max << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewoJaW50IG4sIGs7CgljaW4gPj4gbiA+PiBrOwoJdmVjdG9yPGludD4gYyhuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQoJewoJCWludCBDOwoJCWNpbiA+PiBDOwoJCWNbaV0gPSBDOwoJfQoJdmVjdG9yPGludD4gbChuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQoJewoJCWludCBMOwoJCWNpbiA+PiBMOwoJCWxbaV0gPSBMOwoJfQoKCXZlY3Rvcjx2ZWN0b3I8dWludDMyX3Q+PiBBKG4gKyAxLCB2ZWN0b3I8dWludDMyX3Q+KGsgKyAxKSk7Cgl2ZWN0b3I8dmVjdG9yPHZlY3RvcjxpbnQ+Pj4gQihuICsgMSwgdmVjdG9yPHZlY3RvcjxpbnQ+PihrICsgMSwgdmVjdG9yPGludD4obiArIDEpKSk7CgoJdWludDMyX3QgbWF4ID0gMDsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKCXsKCQlmb3IgKGludCBqID0gMDsgaiA8PSBrOyArK2opCgkJewoJCQl1aW50MzJfdCBtYXhDID0gMDsKCQkJaW50IGJlc3RPID0gMDsKCQkJZm9yIChpbnQgbyA9IDE7IG8gKiBjW2kgLSAxXSA8PSBqOyArK28pCgkJCXsKCQkJCXVpbnQzMl90IEMgPSBBW2kgLSAxXVtqIC0gbyAqIGNbaSAtIDFdXTsKCQkJCWZvciAoaW50IHAgPSAwOyBwIDwgaTsgKytwKQoJCQkJewoJCQkJCWludCBzID0gbWluKG8sIGxbcF0gLSBCW2kgLSAxXVtqIC0gbyAqIGNbaSAtIDFdXVtwXSk7CgkJCQkJaWYocyA8IDApIHMgPSAwOwoJCQkJCUMgKz0gcyAqIGNbcF07CgkJCQl9CgkJCQlpZiAoQyA+IG1heEMpCgkJCQl7CgkJCQkJbWF4QyA9IEM7CgkJCQkJYmVzdE8gPSBvOwoJCQkJfQoJCQl9CgoJCQlBW2ldW2pdID0gbWF4QzsKCQkJQltpXVtqXSA9IEJbaSAtIDFdW2ogLSBiZXN0TyAqIGNbaSAtIDFdXTsKCQkJZm9yIChpbnQgcCA9IDA7IHAgPCBpOyArK2kpCgkJCXsKCQkJCWludCBzID0gbWluKGJlc3RPLCBsW3BdIC0gQltpXVtqXVtwXSk7CgkJCQlpZihzIDwgMCkgcyA9IDA7CgkJCQlCW2ldW2pdW3BdICs9IHM7CgkJCX0KCgkJCWlmIChtYXhDID4gbWF4KQoJCQl7CgkJCQltYXggPSBtYXhDOwoJCQl9CgkJfQoJfQoKCWNvdXQgPDwgbWF4IDw8IGVuZGw7Cn0=