#include <bits/stdc++.h>
int bus_bin(int[], int, int, int);
int main() {
  int n, k, q, i, j, l, y, aux, existeB;
  scanf("%d%d", &n, &k);
  int monedas[n];
  for (i = 0; i < n; i++) scanf("%d", &monedas[i]);
  scanf("%d", &q);
  int cant[q];
  for (i = 0; i < q; i++) scanf("%d", &cant[i]);
  for (i = 0; i < q; i++) {
    aux = cant[i];
    existeB = bus_bin(monedas, 0, n - 1, aux);
    if (existeB) {
      cant[i] = 1;
    } else {
      cant[i] = k + 1;
      for (y = 0; y < n && monedas[y] <= aux; y++) {
        for (j = 1; j <= k && j * monedas[y] <= aux; j++) {
          if (aux - j * monedas[y] == 0) {
            if (j < cant[i]) cant[i] = j;
          } else {
            for (l = 1; l + j <= k; l++) {
              existeB = bus_bin(monedas, 0, n - 1, (aux - j * monedas[y]) / l);
              if ((aux - j * monedas[y]) % l == 0 && existeB) {
                if (j + l < cant[i]) cant[i] = j + l;
                break;
              }
            }
          }
        }
      }
    }
  }
  for (i = 0; i < q; i++) {
    printf("%d\n", cant[i] > k ? -1 : cant[i]);
  }
  return 0;
}
int bus_bin(int v[], int ini, int fin, int x) {
  int medio;
  medio = (ini + fin) / 2;
  if (v[medio] == x)
    return 1;
  else if (ini > fin)
    return 0;
  else if (x > v[medio])
    return bus_bin(v, medio + 1, fin, x);
  else if (x < v[medio])
    return bus_bin(v, ini, medio - 1, x);
}
