#include <bits/stdc++.h>
using namespace std;
bool mark[10000005];
int a[5005];
int n, k;
int cal(int x) {
  int i, j, h, res, r, val;
  res = 1001001001;
  for ((i) = 0; (i) < (n); (i)++)
    for ((j) = (0); (j) <= (k); (j)++) {
      r = x - j * a[i];
      if (r < 0) break;
      if (r == 0)
        res = ((res) < (j) ? (res) : (j));
      else {
        for (h = 1; j + h <= k; h++)
          if (r % h == 0) {
            val = r / h;
            if (val <= 10000000 && mark[val])
              res = ((res) < (j + h) ? (res) : (j + h));
          }
      }
    }
  if (res <= k) return res;
  return -1;
}
void input() {
  int i, nq, x;
  scanf("%d %d", &n, &k);
  for ((i) = 0; (i) < (n); (i)++) scanf("%d", &a[i]), mark[a[i]] = true;
  scanf("%d", &nq);
  while (nq--) {
    scanf("%d", &x);
    printf("%d\n", cal(x));
  }
}
int main() {
  input();
  return 0;
}
