#include <bits/stdc++.h>
using namespace std;
const int N = 5007;
const int MAX_K = 27;
const long long INF = (long long)1e7;
long long inf = (long long)1e18;
int n, k;
long long a[N];
set<long long> myset;
long long work(long long x) {
  long long ans = inf;
  for (int i = 1; i <= n; i++) {
    if (x % a[i] == 0 && x / a[i] <= k) ans = min(ans, x / a[i]);
    for (int j = 0; j <= k; j++) {
      long long y = x - a[i] * j;
      for (int z = 1; z <= k; z++) {
        if (z + j > k) break;
        if (y % z == 0 && myset.count(y / z)) ans = min(ans, (long long)z + j);
      }
    }
  }
  if (ans == inf) return -1;
  return ans;
}
int main() {
  while (2 == scanf("%d%d", &n, &k)) {
    myset.clear();
    for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]), myset.insert(a[i]);
    int q;
    scanf("%d", &q);
    while (q--) {
      long long x;
      scanf("%I64d", &x);
      printf("%I64d\n", work(x));
    }
  }
  return 0;
}
