#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, U b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, U b) {
  if (a < b) a = b;
}
int power(int a, int b, int m, int ans = 1) {
  for (; b; b >>= 1, a = 1LL * a * a % m)
    if (b & 1) ans = 1LL * ans * a % m;
  return ans;
}
int a[200010];
int cnt[50], recnt[50];
int f[50];
int main() {
  int n, q;
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; i++) {
    int second;
    scanf("%d", &second);
    recnt[(__builtin_ctz(second))]++;
  }
  f[0] = 1;
  for (int i = 1; i <= 30; i++) f[i] = 2 * f[i - 1];
  while (q--) {
    int first;
    scanf("%d", &first);
    int u = first;
    int ans = 0;
    for (int i = 0; i <= 30; i++) cnt[i] = recnt[i];
    while (u > 0) {
      int m = -1;
      for (int i = 30; i >= 0; i--) {
        if (u >= f[i] && cnt[i] != 0) {
          m = i;
          break;
        }
      }
      if (m == -1) break;
      int num = min(cnt[m], u / (1 << m));
      u -= num * (1 << m);
      cnt[m] = 0;
      ans += num;
    }
    if (u) {
      printf("%d\n", -1);
      continue;
    }
    printf("%d\n", ans);
  }
  return 0;
}
