#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5010;
const int INF = 1 << 30;
int N, K;
int ar[MAXN];
unordered_map<int, int> mp;
int main() {
  cin >> N >> K;
  for (int i = 0; i < N; ++i) {
    cin >> ar[i];
  }
  for (int i = 0; i < N; ++i) {
    for (int k = 0; k <= K; ++k) {
      if (mp.count(k * ar[i])) {
        mp[k * ar[i]] = min(mp[k * ar[i]], k);
      } else {
        mp[k * ar[i]] = k;
      }
    }
  }
  int Q;
  cin >> Q;
  for (int i = 0; i < Q; ++i) {
    int X;
    cin >> X;
    int res = INF;
    for (int k = 0; k < N; ++k) {
      for (int j = 0; j <= K; ++j) {
        if (mp.count(X - j * ar[k]) && mp[X - j * ar[k]] + j <= K) {
          res = min(res, mp[X - j * ar[k]] + j);
        }
      }
    }
    cout << (res < INF ? res : -1) << '\n';
  }
  return 0;
}
