#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5010;
const int MAXA = 10000010;
int N, K;
int X;
int A[MAXN];
int Q;
int has[MAXA];
int get() {
  for (int take = 1; take <= K; ++take) {
    for (int i = 0; i < N; ++i) {
      if (A[i] * take == X) return take;
      for (int k = 0; k < take; ++k) {
        int c = X - k * A[i];
        if (c % (take - k) != 0) continue;
        c = c / (take - k);
        if (c >= MAXA || c < 0) continue;
        if (has[c]) {
          return take;
        }
      }
    }
  }
  return -1;
}
int main(void) {
  has[0] = 1;
  scanf("%d%d", &N, &K);
  for (int i = 0; i < N; ++i) {
    scanf("%d", A + i);
    has[A[i]] = 1;
  }
  scanf("%d", &Q);
  while (Q--) {
    scanf("%d", &X);
    printf("%d\n", get());
  }
  return 0;
}
