#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const double eps = 1e-9;
const int maxn = 2e8 + 5;
int gcd(int a, int b) {
  while (a % b) {
    int aux = a % b;
    a = b;
    b = aux;
  }
  return b;
}
int main() {
  ios_base::sync_with_stdio(false);
  int n, k;
  cin >> n >> k;
  vector<int> v(n);
  map<int, int> mp;
  for (int i = 0; i < n; ++i) {
    cin >> v[i];
    int x = v[i];
    for (int i = 1; x * i < maxn && i <= k; ++i) {
      int y = x * i;
      auto it = mp.find(y);
      if (it == mp.end()) {
        mp.insert(pair<int, int>(y, i));
      } else {
        it->second = min(it->second, i);
      }
    }
  }
  int q;
  cin >> q;
  while (q--) {
    int x;
    cin >> x;
    int ans = inf;
    for (auto it : mp) {
      int rem = x - it.first;
      if (rem == 0) {
        ans = min(ans, it.second);
      } else {
        auto it2 = mp.find(rem);
        if (it2 != mp.end()) {
          ans = min(ans, it.second + it2->second);
        }
      }
    }
    cout << (ans > k ? -1 : ans) << endl;
  }
}
