#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
const int M = 10000000 + 5;
const int N = 5000 + 5;
const int T = 20 + 5;
int n, k;
int b[T];
int a[N];
char r[2 * 100000000 + 5];
void solve() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= (int)(n); ++i) scanf("%d", &a[i]);
  int Q;
  scanf("%d", &Q);
  for (int i = 1; i <= (int)(Q); ++i) scanf("%d", &b[i]);
  r[0] = 0;
  for (int i = 1; i <= (int)(n); ++i) {
    for (int j = 1; j <= (int)(k); ++j) {
      if (!r[a[i] * j] || r[a[i] * j] > j) r[a[i] * j] = j;
    }
  }
  for (int i = 1; i <= (int)(Q); ++i) {
    int res = r[b[i]];
    for (int j = 1; j <= (int)(n); ++j) {
      for (int u = 1; u <= (int)(k); ++u) {
        int v = k - u;
        if (b[i] > u * a[j]) {
          if (r[b[i] - u * a[j]]) {
            int t = r[b[i] - u * a[j]];
            if (t <= v) {
              if (res == 0 || res > u + t) res = u + t;
            }
          }
        }
      }
    }
    if (!res)
      puts("-1");
    else
      printf("%d\n", res);
  }
}
void testgen() {
  FILE* f = fopen("input.txt", "w");
  fclose(f);
}
int main() {
  std::cout << std::fixed;
  std::cout.precision(13);
  std::cerr << std::fixed;
  std::cerr.precision(3);
  solve();
  return 0;
}
