#include <bits/stdc++.h>
int main(void) {
  std::vector<int> a;
  std::map<int, int> seen;
  int best, n, k, q, x, i, j, l;
  std::cin >> n >> k;
  a.resize(n);
  seen[0] = 0;
  for (i = 0; i < n; ++i) {
    std::cin >> a[i];
    for (j = 1; j <= k; ++j) {
      if (seen.count(a[i] * j)) {
        seen[a[i] * j] = std::min(seen[a[i] * j], j);
      } else {
        seen[a[i] * j] = j;
      }
    }
  }
  std::cin >> q;
  while (q--) {
    std::cin >> x;
    best = INT_MAX;
    for (i = 0; i < n; ++i) {
      for (j = 1; j <= k && a[i] * j <= x; ++j) {
        if (seen.count(x - a[i] * j) && j + seen[x - a[i] * j] <= k) {
          best = std::min(best, j + seen[x - a[i] * j]);
        }
      }
    }
    if (best == INT_MAX) {
      std::cout << "-1\n";
    } else {
      std::cout << best << "\n";
    }
  }
  return 0;
}
