#include <bits/stdc++.h>
using namespace std;
int n, k;
int a[5000];
int q;
int c[20];
set<int> cup;
int gcd(int a, int b, int &x, int &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  int d = gcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
bool find_any_solution(int a, int b, int c, int &x0, int &y0, int &g) {
  g = gcd(abs(a), abs(b), x0, y0);
  if (c % g != 0) return false;
  x0 *= c / g;
  y0 *= c / g;
  if (a < 0) x0 *= -1;
  if (b < 0) y0 *= -1;
  return true;
}
void shift_solution(int &x, int &y, int a, int b, int cnt) {
  x += cnt * b;
  y -= cnt * a;
}
int find_all_solutions(int a, int b, int c, int minx, int maxx, int miny,
                       int maxy, int &ll, int &rr) {
  int x, y, g;
  if (!find_any_solution(a, b, c, x, y, g)) return 0;
  a /= g;
  b /= g;
  int sign_a = a > 0 ? +1 : -1;
  int sign_b = b > 0 ? +1 : -1;
  shift_solution(x, y, a, b, (minx - x) / b);
  if (x < minx) shift_solution(x, y, a, b, sign_b);
  if (x > maxx) return 0;
  int lx1 = x;
  shift_solution(x, y, a, b, (maxx - x) / b);
  if (x > maxx) shift_solution(x, y, a, b, -sign_b);
  int rx1 = x;
  shift_solution(x, y, a, b, -(miny - y) / a);
  if (y < miny) shift_solution(x, y, a, b, -sign_a);
  if (y > maxy) return 0;
  int lx2 = x;
  shift_solution(x, y, a, b, -(maxy - y) / a);
  if (y > maxy) shift_solution(x, y, a, b, sign_a);
  int rx2 = x;
  if (lx2 > rx2) swap(lx2, rx2);
  int lx = max(lx1, lx2);
  int rx = min(rx1, rx2);
  ll = lx;
  rr = rx;
  return (rx - lx) / abs(b) + 1;
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    cup.insert(a[i]);
  }
  cin >> q;
  for (int i = 0; i < q; i++) {
    cin >> c[i];
  }
  int mi = 23;
  for (int i = 0; i < q; i++) {
    mi = 23;
    for (int A = 0; A <= 20; A++) {
      for (int B = 1; B <= 20; B++) {
        for (int x = 0; x < n; x++) {
          if (A != 0 && c[i] % A == 0 && c[i] / A == a[x] && A < mi) mi = A;
          int y = (c[i] - A * a[x]) / B;
          if ((c[i] - A * a[x]) % B != 0) continue;
          if (cup.find(y) != cup.end() && A + B < mi) {
            mi = A + B;
          }
        }
      }
    }
    if (mi <= k)
      cout << mi << "\n";
    else
      cout << "-1\n";
  }
}
