#include <bits/stdc++.h>
using namespace std;
const int N = 1000 * 1000 + 10;
const int INF = 1000 * 1000 * 1000 + 10;
int n, k, q, tmp, t, p = 1;
int b[N];
vector<int> a;
map<int, int> m;
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; ++i) {
    cin >> tmp;
    for (int j = 1; j <= k; ++j) {
      if (m[tmp * j] == 0) {
        m[tmp * j] = p;
        p++;
        a.push_back(tmp * j);
      }
      if (b[m[tmp * j]] == 0 || b[m[tmp * j]] > j) b[m[tmp * j]] = j;
    }
  }
  sort(a.begin(), a.end());
  cin >> q;
  for (int i = 0; i < q; i++) {
    cin >> tmp;
    t = INF;
    for (int j = 0; j < (((int)a.size())); ++j) {
      if (a[j] > tmp)
        break;
      else if (b[m[tmp - a[j]]] != 0 || tmp - a[j] == 0) {
        t = min(t, b[m[a[j]]] + b[m[tmp - a[j]]]);
      }
    }
    if (t == INF || t > k)
      cout << -1 << "\n";
    else
      cout << t << "\n";
  }
  return 0;
}
