#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 7;
const int maxm = 3e5 + 7;
const long long linf = 1e16;
const int inf = 2e9;
const long long mod = 1e9 + 7;
const double esp = 1e-9;
const double pi = 4 * atan((double)1);
template <typename T>
inline void read(T &x) {
  char ch;
  x = 0;
  for (ch = getchar(); ch < '0' || ch > '9'; ch = getchar())
    ;
  for (; ch >= '0' && ch <= '9'; ch = getchar()) x = 10 * x + ch - '0';
}
inline int getbit(int x, int k) { return (x >> k) & 1; }
inline int pow2(int x) { return (1 << x); }
inline int offbit(int x, int k) { return x & ~(1 << k); }
int n, q;
int a[maxn];
map<int, int> d;
int kq;
inline void enter() {
  cin >> n >> q;
  for (int i = int(1); i <= int(n); i++) cin >> a[i], d[a[i]]++;
}
inline void solve() {
  int k;
  cin >> k;
  kq = 0;
  int pos = 0;
  for (int i = 30; i >= 0; i--) {
    pos *= 2;
    if ((1 << i) <= k) {
      if (getbit(k, i)) pos++;
      if (d[1 << i] >= pos)
        kq += pos, pos = 0;
      else
        kq += d[1 << i], pos -= d[1 << i];
    }
  }
  if (pos) kq = -1;
}
inline void Print() { cout << kq << '\n'; }
inline void file() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  freopen(
      "TEST"
      ".INP",
      "r", stdin);
  freopen(
      "TEST"
      ".OUT",
      "w", stdout);
}
int main() {
  enter();
  while (q--) solve(), Print();
  return 0;
}
