#include <bits/stdc++.h>
int ex[] = {1, -1, 0, 0};
int wye[] = {0, 0, 1, -1};
using namespace std;
int n, k, q, x, siz[25], an = 1000000000, y;
vector<int> vt[25];
bool bin(int pos, int num) {
  int lo = 0, hi = siz[pos] - 1, mid;
  while (lo <= hi) {
    mid = (lo + hi) >> 1;
    if (vt[pos][mid] == num)
      return true;
    else if (vt[pos][mid] > num)
      hi = mid - 1;
    else
      lo = mid + 1;
  }
  return false;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &x);
    for (int j = 1; j <= k; j++)
      if ((x * j) < 200000005) vt[j].push_back(x * j);
  }
  for (int i = 1; i <= k; i++) siz[i] = vt[i].size();
  scanf("%d", &q);
  for (int i = 1; i <= q; i++) {
    scanf("%d", &x);
    an = 1000000000;
    for (int j = 1; j <= k; j++) {
      for (int l = 0; l < siz[j]; l++) {
        y = vt[j][l];
        if (y == x) {
          an = min(an, j);
          continue;
        } else if (y > x)
          continue;
        for (int m = 1; m <= (k - j); m++) {
          if (bin(m, x - y)) an = min(an, j + m);
        }
      }
    }
    if (an == 1000000000)
      printf("-1\n");
    else
      printf("%d\n", an);
  }
  return 0;
}
