#include <bits/stdc++.h>
using namespace std;
int p[5010], num1, num2;
map<int, int> ko;
int main() {
  int n, k;
  while (scanf("%d%d", &n, &k) != EOF) {
    ko.clear();
    for (int i = 0; i < n; i++) scanf("%d", &p[i]);
    for (int i = 0; i < n; i++)
      for (int j = 1; j < k; j++) {
        if (ko.count(p[i] * j)) {
          ko[p[i] * j] = min(ko[p[i] * j], j);
        } else
          ko[p[i] * j] = j;
      }
    int t, sum;
    scanf("%d", &t);
    while (t--) {
      sum = 100000000;
      int tnum;
      scanf("%d", &tnum);
      for (int i = 0; i < n; i++) {
        for (int j = 0; j <= k; j++) {
          if (p[i] * j > tnum)
            continue;
          else {
            if (p[i] * j == tnum) {
              sum = min(sum, j + ko[tnum - p[i] * j]);
              continue;
            }
            if (ko.count(tnum - p[i] * j) && j + ko[tnum - p[i] * j] <= k)
              sum = min(sum, j + ko[tnum - p[i] * j]);
          }
        }
      }
      if (sum > 20) sum = -1;
      printf("%d\n", sum);
    }
  }
}
