#include <bits/stdc++.h>
using namespace std;
vector<long long> adj[32];
int main() {
  long long a, b, c, j, p, q, r, s, x, y, z, lo, hi, mid, d, e, f, fn;
  int ans, n, k, i;
  vector<long long> v;
  scanf("%d %d", &n, &k);
  for (i = 0; i < n; i++) {
    scanf("%lld", &a);
    for (j = 1; j <= k; j++) {
      c = a * j;
      adj[j].push_back(c);
    }
  }
  scanf("%lld", &q);
  for (i = 1; i <= q; i++) {
    scanf("%lld", &a);
    ans = 55;
    for (j = 0; j < n; j++) {
      fn = min(ans, k);
      for (int lp = 1; lp <= fn; lp++) {
        p = adj[lp][j];
        if (p > a)
          break;
        else if (p == a) {
          ans = min(ans, lp);
          break;
        } else {
          if (j != n - 1 && lp != fn) {
            z = a - p;
            for (int tp = 1; tp <= fn - lp; tp++) {
              lo = j + 1;
              hi = n - 1;
              while (lo < hi) {
                mid = (lo + hi) >> 1;
                if (adj[tp][mid] >= z) {
                  hi = mid;
                } else {
                  lo = mid + 1;
                }
              }
              if (lo <= n - 1) {
                if (adj[tp][lo] == z) {
                  ans = min(ans, lp + tp);
                  break;
                }
              }
            }
          }
        }
        if (ans == 1) break;
      }
      if (ans == 1) break;
    }
    if (ans <= k)
      printf("%d\n", ans);
    else {
      printf("-1\n");
    }
  }
  return 0;
}
