#include <bits/stdc++.h>
using namespace std;
constexpr int MAX = 5e3 + 3;
int d[MAX];
unordered_map<int, int> m;
int minbill(int n, int k, int r) {
  int bills = 1 << 5;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= k; j++) {
      int s1 = d[i] * j, s2 = r - s1;
      if (!s2)
        bills = min(bills, j);
      else if (s2 > 0 && m[s2])
        bills = min(bills, j + s2 / m[s2]);
    }
  }
  return bills <= k ? bills : -1;
}
int main() {
  int n, q, k, r = MAX;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &d[i]);
    for (int j = 1, r = d[i]; j <= k; j++, r += d[i])
      if (d[i] > m[r]) m[r] = d[i];
  }
  scanf("%d", &q);
  while (q--) {
    scanf("%d", &r);
    printf("%d\n", minbill(n, k, r));
  }
  return 0;
}
