#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int n, k, q, cost, max_value = -1, min_value = INF;
vector<int> values;
map<int, int> sums;
int main() {
  cin >> n >> k;
  values.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> values[i];
    max_value = max(max_value, values[i]);
    min_value = min(min_value, values[i]);
  }
  for (int c = k; c > 0; c--) {
    for (int i = 0; i < n; i++) {
      int cur_s = values[i] * c;
      sums[cur_s] = c;
    }
  }
  cin >> q;
  for (int q_ind = 0; q_ind < q; q_ind++) {
    cin >> cost;
    int min_n = INF;
    if (cost > max_value * k || cost < min_value) {
      cout << -1 << "\n";
    } else {
      for (int i = 0; i < n; i++) {
        for (int c = 0; c <= k; c++) {
          int cur_s = values[i] * c;
          int left = cost - cur_s;
          map<int, int>::iterator iter = sums.find(left);
          if (iter != sums.end()) {
            min_n = min(min_n, c + sums[left]);
          }
        }
      }
      if (min_n > k) {
        cout << -1 << "\n";
      } else {
        cout << min_n << "\n";
      }
    }
  }
  return 0;
}
