#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:128000000")
using namespace std;
void solve();
int main() {
  string s = "";
  cin.tie(0);
  cout.sync_with_stdio(0);
  cout.precision(10);
  cout << fixed;
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
int n, k;
void solve() {
  cin >> n >> k;
  vector<int> a(n);
  vector<pair<int, int> > b;
  b.reserve(k * n);
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    pair<int, int> sum = make_pair(0, 0);
    for (int j = 0; j < k; ++j) {
      sum.first += a[i];
      sum.second++;
      b.push_back(sum);
    }
  }
  vector<pair<int, int> > c;
  b.push_back(make_pair(0, 0));
  sort(b.begin(), b.end());
  for (int i = 0; i < b.size(); ++i) {
    if (i == 0 || b[i].first != b[i - 1].first) {
      c.push_back(b[i]);
    }
  }
  int q;
  cin >> q;
  for (int i = 0; i < q; ++i) {
    int xi;
    cin >> xi;
    int ans = k + 1;
    int right = c.size() - 1;
    for (int left = 0; left < c.size(); ++left) {
      while (right >= 0 && c[right].first + c[left].first > xi) {
        --right;
      }
      if (right >= 0 && c[left].first + c[right].first == xi) {
        if (ans == -1 || c[left].second + c[right].second < ans) {
          ans = c[left].second + c[right].second;
        }
      }
    }
    if (ans > k) {
      ans = -1;
    }
    cout << ans << "\n";
  }
}
