#include <bits/stdc++.h>
using namespace std;
int a[5010];
int main() {
  int n, m;
  while (cin >> n >> m) {
    map<int, int> f;
    f[0] = 0;
    for (int i = 0; i < (n); ++i) {
      scanf("%d", &a[i]);
      for (int num = 1; num <= m && a[i] * num <= 2e8; ++num) {
        if (f.find(a[i] * num) == f.end())
          f[a[i] * num] = num;
        else
          f[a[i] * num] = min(f[a[i] * num], num);
      }
    }
    int q;
    cin >> q;
    while (q--) {
      int x;
      scanf("%d", &x);
      int flag = -1;
      for (int i = 0; i < (n); ++i) {
        for (int j = 1; j <= m && a[i] * j <= x; ++j) {
          if (f.find(x - a[i] * j) != f.end() && j + f[x - a[i] * j] <= m) {
            if (flag == -1)
              flag = j + f[x - a[i] * j];
            else
              flag = min(flag, j + f[x - a[i] * j]);
          }
        }
      }
      printf("%d\n", flag);
    }
  }
  return 0;
}
