#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
#define pb push_back
#define ff first
#define ss second
const ll inf = 2e18;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, X; cin>>n>>X;
int m = 2 * n;
vector<int> a(m + 1);
for (int i = 1; i <= m; i++){
cin>>a[i];
}
vector<ll> c(m + 1);
for (int i = 1; i <= m; i++){
cin>>c[i];
}
vector<ll> f(m + 1);
vector<int> l(n + 1), r(n + 1);
int cc = 0;
for (int i = 1; i <= m; i++){
if (!l[a[i]]){
l[a[i]] = i;
cc++;
}
else {
r[a[i]] = i;
f[1] += cc;
}
}
for (int i = 1; i < m; i++){
int x = a[i];
f[i + 1] = f[i] + n - (r[x] - i);
l[x] = r[x]; r[x] = m + i;
}
vector<pll> all = {{}};
for (int i = 1; i <= m; i++){
all.pb({f[i], c[i]});
}
sort(all.begin() + 1, all.end());
vector<ll> x(m + 1), y(m + 1);
for (int i = 1; i <= m; i++){
x[i] = all[i].ff;
y[i] = all[i].ss;
}
vector<ll> :: iterator it;
vector<ll> pc(m + 2); pc.back() = inf;
for (int i = m; i > 0; i--) pc[i] = min(pc[i + 1], y[i]);
vector<ll> pt(m + 1); pt[0] = inf;
for (int i = 1; i <= m; i++){
pt[i] = min(pt[i - 1], y[i] - x[i] * X);
}
int q; cin>>q;
while (q--){
ll k; cin>>k;
it = upper_bound(x.begin() + 1, x.end(), k);
int j = (int) (it - x.begin());
cout<<min(pt[j - 1] + k * X, pc[j])<<"\n";
}
}