#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::endl;
using std::set;
const int MAXN = 5e+4 + 10;
int ar[MAXN];
set<int> vals;
bool found = false;
void answer(int x) {
  cout << x << endl;
  found = true;
}
int main() {
  int n, k;
  cin >> n >> k;
  for (int q = 0; q < n; ++q) {
    cin >> ar[q];
    vals.insert(ar[q]);
  }
  int queries;
  cin >> queries;
  for (int q = 0; q < queries; ++q) {
    int mon;
    cin >> mon;
    found = false;
    for (int i = 1; i <= k && !found; ++i) {
      for (int j = 1; j <= i && !found; ++j) {
        for (int index = 0; index < n && !found; ++index) {
          int c = i - j;
          int monLost = mon - ar[index] * j;
          if (monLost == 0) {
            answer(j);
            continue;
          }
          if (c == 0 || monLost < 0 || monLost % c != 0) continue;
          monLost /= c;
          if (vals.count(monLost) != 0) answer(i);
        }
      }
    }
    if (!found) cout << -1 << endl;
  }
  return 0;
}
