#include <bits/stdc++.h>
using namespace std;
int m[5010];
int n, k, ans, q, a;
int lets(int l, int r, int who) {
  int mid;
  if (m[r] <= who) return r - 1;
  if (m[l] > who) return -1;
  while (l < r)
    if (m[mid = (l + r + 1) / 2] <= who)
      l = mid;
    else
      r = mid - 1;
  return l;
}
void srch(int now, int money) {
  int k, dd, test;
  for (int i = now; i >= 0; i--) {
    k = money / m[i];
    if (money % m[i] == 0) {
      ans = min(k, ans);
      return;
    }
    if (k >= ans - 1) return;
    dd = money - k * m[i];
    for (int j = k; j > 0; j--) {
      for (test = 1; test < ans - j; test++)
        if (dd % test == 0) {
          k = lets(0, i, dd / test);
          if (m[k] == dd / test) {
            ans = min(j + test, ans);
            break;
          }
        }
      dd += m[i];
    }
  }
}
int main() {
  int i;
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) scanf("%d", &m[i]);
  m[n] = m[n - 1] + 1;
  scanf("%d", &q);
  for (i = 0; i < q; i++) {
    ans = k + 1;
    scanf("%d", &a);
    srch(lets(0, n, a), a);
    if (ans == k + 1)
      printf("-1\n");
    else
      printf("%d\n", ans);
  }
  return 0;
}
