#include <bits/stdc++.h>
int setBit(int N, int pos) { return N = N | (1 << pos); }
int resetBit(int N, int pos) { return N = N & ~(1 << pos); }
bool checkBit(int N, int pos) { return (bool)(N & (1 << pos)); }
using namespace std;
int n, k, arr[5005];
unordered_map<int, int> mapp;
void preprocess() {
  int i, j;
  mapp[0] = 0;
  for (i = 0; i < n; i++) {
    for (j = 1; j <= k; j++) {
      int x = arr[i] * j;
      if (mapp.find(x) == mapp.end())
        mapp[x] = j;
      else
        mapp[x] = min(mapp[x], j);
    }
  }
}
inline int query(int x) {
  int i, j, mn = INT_MAX;
  for (i = 0; i < n; i++) {
    if (x % arr[i] == 0 && x / arr[i] <= k) mn = min(mn, x / arr[i]);
    for (j = 1; j <= k; j++) {
      int fuck = x - arr[i] * j;
      if (mapp.find(fuck) != mapp.end()) mn = min(mn, j + mapp[fuck]);
    }
  }
  return mn > k ? -1 : mn;
}
int main() {
  int i, q, x;
  scanf("%d %d", &n, &k);
  for (i = 0; i < n; i++) scanf("%d", &arr[i]);
  preprocess();
  scanf("%d", &q);
  while (q--) {
    scanf("%d", &x);
    printf("%d\n", query(x));
  }
  return 0;
}
