#include <bits/stdc++.h>
using namespace std;
int n, m, k, bill[5010];
vector<pair<int, int> > can;
void pre() {
  for (int i = 0; i < n; i++) {
    for (int j = 1; j <= k; j++) {
      can.push_back(make_pair(bill[i] * j, j));
    }
  }
  sort(can.begin(), can.end());
}
int tim(int x) {
  int l = 0, r = (int)can.size() - 1;
  while (l <= r) {
    int mid = (l + r) / 2;
    if (can[mid].first > x) {
      r = mid - 1;
    } else if (can[mid].first < x) {
      l = mid + 1;
    } else {
      while (mid > 0 && can[mid].first == can[mid - 1].first) {
        mid--;
      }
      return mid;
    }
  }
  return -1;
}
int main() {
  if (0) {
    freopen("input.txt", "r", stdin);
  };
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    scanf("%d", &bill[i]);
  }
  pre();
  int q;
  cin >> q;
  int x;
  for (int i = 0; i < q; i++) {
    scanf("%d", &x);
    int res = k + 1;
    for (int j = n - 1; j >= 0; j--) {
      for (int u = 1; u <= k; u++) {
        int y = x - (bill[j] * u);
        if (y == 0) {
          res = min(res, u);
          continue;
        }
        int idx = tim(y);
        if (idx == -1) continue;
        res = min(res, u + can[idx].second);
      }
    }
    if (res > k) res = -1;
    printf("%d\n", res);
  }
  return 0;
}
