#include <bits/stdc++.h>
using namespace std;
int a[5005], n, k, now;
map<int, int> mp;
int work(int x) {
  int ans = -1;
  for (int i = n; i >= 1; i--) {
    for (int j = 1; j <= k; j++) {
      now = x - a[i] * j;
      if (now < 0) break;
      map<int, int>::iterator it = mp.find(now);
      if (it != mp.end()) {
        if (j + mp[now] <= k) {
          if (ans == -1)
            ans = j + mp[now];
          else
            ans = min(ans, j + mp[now]);
        }
      }
    }
  }
  return ans;
}
int main() {
  int i, j, m, q, t;
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  mp[0] = 0;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= k; j++) {
      now = a[i] * j;
      map<int, int>::iterator it = mp.find(now);
      if (it != mp.end())
        mp[now] = min(mp[now], j);
      else
        mp[now] = j;
    }
  }
  scanf("%d", &q);
  while (q--) {
    scanf("%d", &t);
    printf("%d\n", work(t));
  }
  return 0;
}
