#include <bits/stdc++.h>
int tiposb[5000], billetes[10000000] = {0};
int main() {
  int N, max, cant, i, min, trans, cant1 = 0, Resto, Q, K, cant2, aux, aux2, b;
  scanf("%d%d%", &N, &max);
  for (i = 0; i < N; i++) scanf("%d", &tiposb[i]), billetes[tiposb[i]] = 1;
  scanf("%d", &cant), Q = cant;
  while (cant--) {
    scanf("%d", &trans);
    min = max + 1;
    for (i = 0; i < N && trans >= tiposb[i]; i++) {
      cant1 = cant1 + trans / tiposb[i];
      if (cant1 <= max) {
        int cant2 = 1, aux = max;
        while (cant2 <= cant1) {
          int b = cant2, aux1 = 1;
          if (trans - (tiposb[i] * (cant2)) != 0) {
            while (aux1 + cant2 <= max) {
              if ((trans - cant2 * tiposb[i]) % aux1 == 0 &&
                  (trans - cant2 * tiposb[i]) / aux1 < 10000000 &&
                  billetes[(trans - cant2 * tiposb[i]) / aux1] == 1) {
                if (cant2 + aux1 < min) min = cant2 + aux1;
                break;
              }
              aux1++;
            }
          } else if (trans - (tiposb[i] * (cant2)) == 0) {
            if (b < min) min = b;
            cant2 = cant1 + 1;
          }
          cant2++;
        }
      }
      cant1 = 0;
    }
    printf("%d\n", min <= max ? min : -1);
  }
}
