#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
using namespace std;
template <typename T>
void uin(T &a, T b) {
  if (b < a) a = b;
}
template <typename T>
void uax(T &a, T b) {
  if (b > a) a = b;
}
const long long maxm = 1000 * 1000 * 10 + 228;
bool exist[maxm];
long long a[5005];
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  for (long long i = 1; i <= n; ++i) {
    cin >> a[i];
    exist[a[i]] = 1;
  }
  long long q;
  cin >> q;
  for (long long it = 0; it < q; ++it) {
    long long x;
    cin >> x;
    long long res = 21;
    for (long long i = 1; i <= n; ++i) {
      for (long long c1 = 0; c1 <= k; ++c1) {
        long long cur = a[i] * c1;
        if (cur == x) {
          uin(res, c1);
        }
        if (cur > x) break;
        for (long long dop = 1; dop <= k - c1; ++dop) {
          if ((x - cur) % dop == 0 && (x - cur) / dop < maxm &&
              exist[(x - cur) / dop]) {
            uin(res, c1 + dop);
          }
        }
      }
    }
    if (res == 21)
      cout << -1 << '\n';
    else
      cout << res << '\n';
  }
  return 0;
}
