#include <bits/stdc++.h>

using namespace std;

int N,K; 
vector<long long> V,B; vector<vector<long long>> dp;

long long max (long long a, long long b)
{
	return (a>b)?a:b;
}

long long bestWithin (int i, int j)
{
	if (i>=j) return 0;
	
	if (dp[i][j]!=-1) return dp[i][j];
	
	long long tmp=-1;
	if ((B[j]==B[i]+K)) tmp=V[j]+V[i]+bestWithin(i+1,j-1);
	
	dp[i][j]=max(max(tmp,bestWithin(i+1,j)),bestWithin(i,j-1));
	
	return dp[i][j];
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	cin>>N>>K; V.resize(N); B.resize(N); dp.resize(N);
	
	for (int i=0;i<N;i++) cin>>V[i];
	for (int i=0;i<N;i++) cin>>B[i];
	
	for (int i=0;i<N;i++){ dp[i].resize(N);
	for (int j=0;j<N;j++) dp[i][j]=-1;	
	}
	
	long long a = bestWithin(0,N-1);
	
	cout<<a;
}