#include <bits/stdc++.h>
using namespace std;
int n, k, a[5002];
map<int, int> m;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", a + i);
    for (int j = 1; j <= k; j++) {
      if (m.count(a[i] * j))
        m[a[i] * j] = min(m[a[i] * j], j);
      else
        m[a[i] * j] = j;
    }
  }
  m[0] = 0;
  int q;
  scanf("%d", &q);
  while (q--) {
    int t, ans = k + 1;
    scanf("%d", &t);
    for (map<int, int>::iterator i = m.begin(); i != m.end(); i++) {
      int f = (*i).first, s = (*i).second;
      if (t < f) break;
      if (m.count(t - f)) ans = min(ans, s + m[t - f]);
    }
    if (ans == k + 1) ans = -1;
    printf("%d\n", ans);
  }
  return 0;
}
