#include <bits/stdc++.h>
int Billetes[5001], Bills[10000001] = {0};
int main() {
  int n, k, q, i, Min, Solic, B = 0, Resto, Q, K;
  scanf("%d%d%", &n, &k);
  for (i = 0; i < n; i++) scanf("%d", &Billetes[i]), Bills[Billetes[i]] = 1;
  scanf("%d", &q), Q = q;
  while (q--) {
    scanf("%d", &Solic);
    Min = k + 1;
    for (i = 0; i < n && Solic >= Billetes[i]; i++) {
      B = B + Solic / Billetes[i];
      if (B <= k) {
        int I = 1, aux = k;
        while (I <= B) {
          int b = I, T = 1;
          if (Solic - (Billetes[i] * (I)) != 0) {
            while (T + I <= k) {
              if ((Solic - I * Billetes[i]) % T == 0 &&
                  (Solic - I * Billetes[i]) / T < 10000001 &&
                  Bills[(Solic - I * Billetes[i]) / T] == 1) {
                if (I + T < Min) Min = I + T;
                break;
              }
              T++;
            }
          } else if (Solic - (Billetes[i] * (I)) == 0) {
            if (b < Min) Min = b;
            I = B + 1;
          }
          I++;
        }
      }
      B = 0;
    }
    printf("%d\n", Min <= k ? Min : -1);
  }
}
