#include <bits/stdc++.h>
using namespace std;
vector<long long> mar;
long long n, k;
map<long long, long long> br;
long long wy(long long tp) {
  long long bst = k + 1;
  br.clear();
  for (long long i = 0; i < (n); ++i) {
    for (long long j = 0; j < (k + 1); ++j) {
      if (j * mar[i] > tp) continue;
      if (br.find(tp - j * mar[i]) == br.end())
        br[tp - j * mar[i]] = j;
      else
        br[tp - j * mar[i]] = min(br[tp - j * mar[i]], j);
    }
  }
  for (long long i = 0; i < (n); ++i) {
    for (long long j = 0; j < (k + 1); ++j) {
      if (j * mar[i] > tp) continue;
      if (br.find(j * mar[i]) == br.end()) continue;
      bst = min(bst, j + br[j * mar[i]]);
    }
  }
  if (bst == k + 1) return -1;
  return bst;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  mar.resize(n);
  for (long long i = 0; i < (n); ++i) cin >> mar[i];
  long long q;
  cin >> q;
  long long tp;
  for (long long z = 0; z < (q); ++z) {
    cin >> tp;
    cout << wy(tp) << "\n";
  }
  return 0;
}
