#include <bits/stdc++.h>
using namespace std;
const int maxn = 755;
const int maxq = 200010;
const long long oo = 1e15;
int n, q;
int a[maxn];
long long b[maxq];
long long f[maxn];
inline int read() {
  int x = 0;
  char ch = getchar();
  bool positive = 1;
  for (; ch < '0' || ch > '9'; ch = getchar())
    if (ch == '-') positive = 0;
  for (; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
  return positive ? x : -x;
}
inline long long readll() {
  long long x = 0;
  char ch = getchar();
  bool positive = 1;
  for (; ch < '0' || ch > '9'; ch = getchar())
    if (ch == '-') positive = 0;
  for (; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
  return positive ? x : -x;
}
void write(int x) {
  if (x > 9) write(x / 10);
  putchar(x % 10 + 48);
}
void input() {
  n = read();
  q = read();
  for (int i = (1), _b = (n); i <= _b; i++) a[i] = read();
  for (int i = (1), _b = (q); i <= _b; i++) b[i] = readll();
}
void solve() {
  for (int i = (n), _a = (1); i >= _a; i--)
    for (int j = (n - i + 1), _a = (0); j >= _a; j--) {
      f[j] = min(0ll, f[j] + a[i]);
      if (j) f[j] = max(f[j], f[j - 1]);
    }
  for (int i = (1), _b = (q); i <= _b; i++) {
    int pos = lower_bound(f, f + 1 + n, -b[i]) - f;
    printf("%d\n", pos);
  }
}
int main() {
  clock_t timestart, timeend;
  timestart = clock();
  input();
  solve();
  timeend = clock();
  return 0;
}
