#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  vector<int> a(n);
  unordered_map<int, int> b;
  for (int &i : a) {
    scanf("%d", &i);
    for (int j = 1; j <= k; j++) {
      if (i * j > 2e8) {
        break;
      }
      if (!b.count(i * j)) {
        b[i * j] = j;
      }
      b[i * j] = min(b[i * j], j);
    }
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    int x;
    scanf("%d", &x);
    int ans = 1e9;
    if (b.count(x)) {
      ans = b[x];
    }
    for (auto i : b)
      if (b.count(x - i.first)) {
        ans = min(ans, i.second + b[x - i.first]);
      }
    if (ans > k) {
      ans = -1;
    }
    printf("%d\n", ans);
  }
  return 0;
}
