#include <bits/stdc++.h>
using namespace std;
vector<int> A;
int n, k, q;
int main() {
  cin >> n >> k;
  A = vector<int>(n, 0);
  for (int i = 0; i < n; i++) cin >> A[i];
  map<int, int> M;
  M[0] = 0;
  for (int a : A) {
    int total = 0;
    for (int i = 1; i <= k; i++) {
      total += a;
      if (total > 200000000) break;
      if (M.find(total) == M.end())
        M[total] = i;
      else if (M[total] > i)
        M[total] = i;
    }
  }
  cin >> q;
  for (int i = 0; i < q; i++) {
    int x;
    cin >> x;
    int best = 1000;
    for (int a : A) {
      int total = 0;
      for (int i = 1; i <= k; i++) {
        total += a;
        if (total > x) break;
        if (M.find(x - total) == M.end())
          continue;
        else
          best = min(best, i + M[x - total]);
      }
    }
    if (best > k)
      cout << -1 << endl;
    else
      cout << best << endl;
  }
}
