#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll n, k, b[1000], a[1000];
ll dp[707][707];
ll f(ll l, ll r)
{
if (l >= r)
return 0;
if (dp[l][r] > -1e10)
return dp[l][r];
if (b[l] > k)
{
dp[l][r] = f(l+1, r);
return dp[l][r];
}
bool found = false;
for (ll i = l + 1; i <= r; ++i)
{
if (b[i] == b[l] + k)
{
found = true;
dp[l][r] = max(dp[l][r], (a[l] + a[i] + f(l+1, i-1) + f(i+1, r)));
}
}
dp[l][r] = found ? max(dp[l][r], f(l+1, r)) : f(l+1, r);
return dp[l][r];
}
void solve()
{
cin >> n >> k;
for (int i = 0; i < n; ++i)
cin >> a[i];
for (int i = 0; i < n; ++i)
cin >> b[i];
for (ll i = 0; i <= n; ++i)
for (ll j = 0; j <= n; ++j)
dp[i][j] = -1e11;
cout << max(0LL, f(0, n-1)) << '\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t { 1 };
// cin >> t;
while (t--)
solve();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CgpsbCBuLCBrLCBiWzEwMDBdLCBhWzEwMDBdOwpsbCBkcFs3MDddWzcwN107CgpsbCBmKGxsIGwsIGxsIHIpCnsKICAgIGlmIChsID49IHIpCiAgICAgICAgcmV0dXJuIDA7CiAgICBpZiAoZHBbbF1bcl0gPiAtMWUxMCkKICAgICAgICByZXR1cm4gZHBbbF1bcl07CiAgICBpZiAoYltsXSA+IGspCiAgICB7CiAgICAgICAgZHBbbF1bcl0gPSBmKGwrMSwgcik7CiAgICAgICAgcmV0dXJuIGRwW2xdW3JdOwogICAgfQogICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgZm9yIChsbCBpID0gbCArIDE7IGkgPD0gcjsgKytpKQogICAgewogICAgICAgIGlmIChiW2ldID09IGJbbF0gKyBrKQogICAgICAgIHsKICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICBkcFtsXVtyXSA9IG1heChkcFtsXVtyXSwgKGFbbF0gKyBhW2ldICsgZihsKzEsIGktMSkgKyBmKGkrMSwgcikpKTsKICAgICAgICB9CiAgICB9CiAgICBkcFtsXVtyXSA9IGZvdW5kID8gbWF4KGRwW2xdW3JdLCBmKGwrMSwgcikpIDogZihsKzEsIHIpOwogICAgcmV0dXJuIGRwW2xdW3JdOwp9Cgp2b2lkIHNvbHZlKCkKewogICAgY2luID4+IG4gPj4gazsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGNpbiA+PiBhW2ldOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgY2luID4+IGJbaV07CiAgICBmb3IgKGxsIGkgPSAwOyBpIDw9IG47ICsraSkKICAgICAgICBmb3IgKGxsIGogPSAwOyBqIDw9IG47ICsraikKICAgICAgICAgICAgZHBbaV1bal0gPSAtMWUxMTsKICAgIGNvdXQgPDwgbWF4KDBMTCwgZigwLCBuLTEpKSA8PCAnXG4nOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCiAgICBpbnQgdCB7IDEgfTsKLy8gICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgICAgIHNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0K