#include <bits/stdc++.h>
using namespace std;
int n, k;
int a[5001];
vector<pair<long long, int>> v;
int bin_s_r(int l, int r, int x) {
  while (r - l > 1) {
    int middle = (l + r) / 2;
    if (v[middle].first > x)
      r = middle;
    else
      l = middle;
  }
  return l;
}
int bin_s_l(int l, int r, int x) {
  while (r - l > 1) {
    int middle = (l + r) / 2;
    if (v[middle].first >= x)
      r = middle;
    else
      l = middle;
  }
  return r;
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++)
    for (int r = 1; r <= k; r++) v.push_back(make_pair(a[i] * r, r));
  long long q, x;
  sort(v.begin(), v.end());
  int N = n * k;
  cin >> q;
  for (int i = 0; i < q; i++) {
    cin >> x;
    int R1 = bin_s_r(0, N, x);
    int R = bin_s_l(-1, N, v[R1].first);
    if (v[0].first > x)
      cout << -1 << endl;
    else {
      int best_amount;
      if (v[R].first == x)
        best_amount = v[R].second;
      else
        best_amount = 21;
      while (R > 0) {
        int X = bin_s_l(-1, R1, x - v[R].first);
        if (v[X].first == x - v[R].first)
          best_amount = min(best_amount, v[R].second + v[X].second);
        R--;
      }
      if (best_amount <= k)
        cout << best_amount << endl;
      else
        cout << -1 << endl;
    }
  }
  return 0;
}
