#include <bits/stdc++.h> using namespace std; uint8_t f[100*100000+1]; int val[5000]; int main() { int n, s; while (scanf("%d%d", &n, &s)==2) { memset(f, 0x7f, sizeof(f)); f[0] = 0; for (int i = 0; i<n; i++) { int v; scanf("%d", &v); val[i] = v; for (int j = 1; j<=s; j++) f[j*v] = min(f[j*v], (uint8_t)j); } int q; scanf("%d", &q); for (int i = 0; i<q; i++) { int ans = 101; int m; scanf("%d", &m); for (int j = 0; j<n; j++) for (int k = 0; k<=(s+1)/2; k++) { if (m<val[j]*k) break; ans = min(ans, k+f[m-val[j]*k]); } if (ans>s) puts("-1"); else printf("%d\n", ans); } } return 0; }