#include <bits/stdc++.h>
using namespace std;
const long long MAX = 1e9 + 7;
const long long mod = 1e9 + 7;
const long long maxn = 5e7 + 7;
int n, kk, q;
int a[5007];
set<long long> vis;
int main() {
  scanf("%d%d", &n, &kk);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    vis.insert(a[i]);
  }
  scanf("%d", &q);
  for (int i = 1; i <= q; i++) {
    int sum = 0, x, ans = MAX;
    scanf("%d", &x);
    int l = 0, r = n + 1, flag = 0;
    if (x < a[n]) {
      while (l + 1 < r) {
        int mid = (l + r) >> 1;
        if (a[mid] <= x)
          l = mid;
        else
          r = mid;
      }
    } else
      l = n;
    if (l == 0) {
      printf("-1\n");
      continue;
    }
    for (int j = l; j > 0; j--) {
      sum = 0;
      vis.erase(a[j]);
      int xx = x;
      sum += xx / a[j];
      xx = xx % a[j];
      if (xx == 0) {
        ans = min(ans, sum);
        vis.insert(a[j]);
        break;
      }
      if (sum > kk) {
        vis.insert(a[j]);
        break;
      }
      while (sum) {
        xx = x - sum * a[j];
        for (int b = 1; b <= 20 - sum; b++) {
          if (xx % b == 0) {
            int w = xx / b;
            if (vis.find(w) != vis.end()) ans = min(ans, sum + b);
          }
        }
        sum--;
      }
      vis.insert(a[j]);
    }
    if (ans == 0 || ans > kk)
      printf("-1\n");
    else
      printf("%d\n", ans);
  }
  return 0;
}
