#include <bits/stdc++.h>
using namespace std;
const long long int N = 2e5 + 7;
const long long int inf = 1e10 + 7;
const long long int mod = 1e9 + 7;
int main() {
  long long int n, q, i, j, k;
  cin >> n >> q;
  long long int a[n + 1];
  long long int dp[65];
  memset(dp, 0, sizeof dp);
  for (i = 0; i < n; i++) {
    cin >> a[i];
    k = a[i];
    j = 0;
    while (k != 1) {
      k /= 2;
      j++;
    }
    dp[j]++;
  }
  long long int dp1[65];
  for (i = 0; i < 60; i++) {
    dp1[i] = dp[i];
  }
  for (i = 0; i < q; i++) {
    for (long long int p = 0; p < 60; p++) {
      dp[p] = dp1[p];
    }
    cin >> k;
    long long int ans = 0;
    bool ok = 1;
    for (j = 0; j < 60; j++) {
      if (k & (1LL << j)) {
        if (dp[j] == 0) {
          if (((j - 1) < 0 && dp[j - 1] < 2))
            ok = 0;
          else if (j - 1 >= 0 && dp[j - 1] >= 2) {
            dp[j - 1] -= 2;
            ans += 2;
          }
          if (j == 0 && dp[j] == 0) ok = 0;
        } else {
          dp[j]--;
          ans++;
        }
      }
    }
    if (!ok)
      printf("-1\n");
    else
      printf("%lld\n", ans);
  }
  return 0;
}
