#include<bits/stdc++.h>
using namespace std;
vector<long long> pos[500001];
vector<long long> idk(1000001);
void upd(long long a) {
while(a < idk.size()) {
idk[a]++;
a+=(a&(-a));
}
}
long long calc(long long a) {
long long c = 0,sb = 0;
for(long long i = 20; i >= 0; i--) {
if(c+(1 << i) <= a) {
c+=(1 << i);
sb+=idk[c];
}
}
return sb;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long long n,x,sb = 0,z = 0;
cin >> n >> x;
sb = n*(n+1)/2;
vector<long long> haha(2*n+1);
vector<long long> cos(2*n+1);
vector<long long> br(n+1);
vector<long long> br2(n+1);
vector<long long> bruh(2*n+1);
for(long long i = 1; i <= 2*n; i++) {
cin >> haha[i];
pos[haha[i]].push_back(i);
}
for(long long i = 1; i <= 2*n; i++) {
cin >> cos[i];
}
for(long long i = 1; i <= 2*n; i++) {
long long a = haha[i];
if(pos[a][1] == i) {
br[a] = calc(i)-calc(pos[a][0]);
sb+=br[a];
long long c = pos[a][1]-pos[a][0]-1-br[a]*2;
z+=c;
br2[a] = n-1-br[a]-c;
upd(pos[a][0]);
}
}
sb+=z/2;
bruh[1] = sb;
for(long long i = 1; i < 2*n; i++) {
long long a = haha[i];
if(pos[a][0] == i) {
sb+=br2[a]-br[a];
}
else {
sb+=br[a]-br2[a];
}
bruh[i+1] = sb;
}
vector<pair<long long,long long>> banana(0);
for(long long i = 1; i <= 2*n; i++) {
banana.push_back({bruh[i],cos[i]});
}
sort(banana.begin(),banana.end());
vector<long long> pr(banana.size()+1,LLONG_MAX);
vector<long long> su(banana.size()+1,LLONG_MAX);
for(long long i = 0; i < banana.size(); i++) {
pr[i+1] = min(pr[i],banana[i].second-banana[i].first*x);
}
for(long long i = banana.size()-1; i >= 0; i--) {
su[i] = min(su[i+1],banana[i].second);
}
long long q;
cin >> q;
for(long long i = 0; i < q; i++) {
long long y,l = 0,r = banana.size()-1;
cin >> y;
if(y <= banana[0].first) {
cout << su[0] << "\n";
}
else {
while(l < r) {
long long mid = (l+r+1)/2;
if(banana[mid].first <= y) {
l = mid;
}
else {
r = mid-1;
}
}
cout << min(pr[l+1]+y*x,su[l+1]) << "\n";
}
}
return 0;
}