#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5005, MAXV = 2E8;
int n, k, q, a[MAXN];
map<int, int> store;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
  store[0] = 0;
  for (int i = 0; i < n; ++i)
    for (int t = 1; t <= k; ++t)
      if (!store.count(a[i] * t))
        store[a[i] * t] = t;
      else
        store[a[i] * t] = min(store[a[i] * t], t);
  scanf("%d", &q);
  while (q--) {
    int x;
    scanf("%d", &x);
    int ret = 1000000007;
    for (int i = 0; i < n; ++i) {
      for (int t = 1; t <= k; ++t) {
        int X = x - t * a[i];
        if (X < 0) break;
        if (store.count(X)) ret = min(ret, t + store[X]);
      }
    }
    if (ret <= k)
      printf("%d\n", ret);
    else
      puts("-1");
  }
}
