#include <bits/stdc++.h>
long long Abs(long long a) { return a > 0 ? a : -a; }
int n, k;
int i, j;
long long a[300000];
long long b[300000];
int ans = 0;
int main() {
  scanf("%d%d", &n, &k);
  for (i = 0; i <= n; i++) scanf("%I64d", &a[i]);
  for (i = 0; i <= n; i++) b[i] = a[i];
  for (i = 0; i <= n; i++) {
    if (a[i] >= 0) {
      a[i + 1] += a[i] / 2;
      a[i] %= 2;
    } else {
      if ((-a[i]) % 2) {
        a[i + 1] -= (-a[i] + 1) / 2;
        a[i] = 1;
      } else {
        a[i + 1] -= (-a[i]) / 2;
        a[i] = 0;
      }
    }
    if (a[i]) {
      i++;
      break;
    }
  }
  for (j = n + 1; j >= 1; j--) {
    a[j - 1] += 2 * a[j];
    if (Abs(a[j - 1]) > 2000000007) break;
    if (j - 1 < i) {
      if (Abs(a[j - 1] - b[j - 1]) <= k)
        if (j - 1 < n || a[j - 1] != b[j - 1]) ans++;
    }
  }
  printf("%d", ans);
}
