#include <bits/stdc++.h>
using namespace std;
int a[5050];
set<int> S;
void solution() {
  int n, k;
  cin >> n >> k;
  S.clear();
  for (int i = (1); i <= (n); i++) {
    scanf("%d", &a[i]);
    S.insert(a[i]);
  }
  set<int>::iterator itend = S.end();
  int q;
  cin >> q;
  int need;
  for (int QQQ = (1); QQQ <= (q); QQQ++) {
    int x;
    scanf("%d", &x);
    int ans = 30;
    for (int i = (1); i <= (n); i++) {
      for (int j = (1); j <= (k); j++) {
        int now = a[i] * j;
        int left = k - j;
        int money = x - now;
        if (money == 0) {
          ans = (((ans) < (j)) ? (ans) : (j));
          continue;
        }
        if (money < 0) continue;
        for (int g = (1); g <= (left); g++) {
          if (money % g == 0) need = money / g;
          if (S.find(need) != itend)
            ans = (((ans) < (j + g)) ? (ans) : (j + g));
        }
      }
    }
    if (ans == 30) ans = -1;
    printf("%d\n", ans);
  }
}
int main() { solution(); }
