#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n, L, v, q;
bool flag;
int a[200005];
int t[200005];
double time(int d, int v) {
double dis = d;
double V = v;
return dis / V;
}
int ans(int v) {
int low = 0, high = n - 1;
if (v > t[high]) return -1;
while( low <= high )
{
int mid = (low + high) >> 1;
if( t[mid] >= v )
high = mid - 1;
else low = mid + 1;
}
return low;
}
int main() {
cin >> n >> L >> v;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n, greater<int>());
t[0] = time(L + a[0], v);
for (int i = 1; i < n; i++) {
t[i] = t[i - 1] + time(a[i], v);
}
cin >> q;
while (q--) {
double x;
double l = L;
cin >> x;
flag = false;
if (time(l, v) > x) {
cout << 0 << endl;
continue;
}
int answ = ans(x);
if (answ == -1) {
cout << -1 << endl;
continue;
}
cout << answ + 1 << endl;
}
return 0;
}