#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; }