#include <bits/stdc++.h>
using namespace std;
int n, q;
map<pair<int, int>, int> need;
unordered_map<int, int> is;
int main() {
  cin >> n >> q;
  for (int i = 1; i <= n; ++i) {
    int x;
    scanf("%d", &x);
    ++is[x];
  }
  for (int i = 0; i <= 30; ++i)
    for (int j = i; j <= 30; ++j) need[make_pair(i, j)] = (1 << j) / (1 << i);
  while (q--) {
    int x, ans = 0;
    scanf("%d", &x);
    unordered_map<int, int> ik = is;
    for (int i = 0; i <= 30; ++i) {
      int d = (1 << i);
      if (ik[d] && (d & x)) {
        --ik[d];
        x -= d;
        ++ans;
      }
    }
    for (int i = 30; i >= 0; --i) {
      int d = (1 << i);
      if (d & x)
        for (int j = i; j >= 0; --j) {
          int k = (1 << j), l = need[make_pair(j, i)];
          if (l <= ik[k]) {
            x -= d;
            ik[k] -= l;
            ans += l;
            break;
          }
        }
    }
    if (!x)
      printf("%d\n", ans);
    else
      puts("-1");
  }
  return 0;
}
