Bear and Polynomials

Limak is a little polar bear. He doesn’t have many toys and thus he often plays with polynomials.

He considers a polynomial valid if its degree is n and its coefficients are integers not exceeding k by the absolute value. More formally:

Let a 0, a 1, …, a n denote the coefficients, so . Then, a polynomial P(x) is valid if all the following conditions are satisfied:

  • a i is integer for every i;
  • |a i| ≤ k for every i;
  • a n ≠ 0.

Limak has recently got a valid polynomial P with coefficients a 0, a 1, a 2, …, a n. He noticed that P(2) ≠ 0 and he wants to change it. He is going to change one coefficient to get a valid polynomial Q of degree n that Q(2) = 0. Count the number of ways to do so. You should count two ways as a distinct if coefficients of target polynoms differ.

Input

The first line contains two integers n and k (1 ≤ n ≤ 200 000, 1 ≤ k ≤ 109) — the degree of the polynomial and the limit for absolute values of coefficients.

The second line contains n + 1 integers a 0, a 1, …, a n (|a i| ≤ k, a n ≠ 0) — describing a valid polynomial . It’s guaranteed that P(2) ≠ 0.

Output

Print the number of ways to change one coefficient to get a valid polynomial Q that Q(2) = 0.

Examples

input

3 1000000000
10 -9 -3 5

output

3

input

3 12
10 -9 -3 5

output

2

input

2 20
14 -7 19

output

0

Note

In the first sample, we are given a polynomial P(x) = 10 - 9x - 3x 2 + 5x 3.

Limak can change one coefficient in three ways:

  1. He can set a 0 =  - 10. Then he would get Q(x) =  - 10 - 9x - 3x 2 + 5x 3 and indeed Q(2) =  - 10 - 18 - 12 + 40 = 0.
  2. Or he can set a 2 =  - 8. Then Q(x) = 10 - 9x - 8x 2 + 5x 3 and indeed Q(2) = 10 - 18 - 32 + 40 = 0.
  3. Or he can set a 1 =  - 19. Then Q(x) = 10 - 19x - 3x 2 + 5x 3 and indeed Q(2) = 10 - 38 - 12 + 40 = 0.

In the second sample, we are given the same polynomial. This time though, k is equal to 12 instead of 109. Two first of ways listed above are still valid but in the third way we would get |a 1| > k what is not allowed. Thus, the answer is 2 this time.

Solution:

#include <bits/stdc++.h>

using namespace std;

const long long inf = (long long) 1e18;
const int N = 1234567;

long long a[N], b[N];

int main() {
int n, k;
scanf("%d %d", &n, &k);
n++;
for (int i = 0; i < n; i++) {
    int foo;
    scanf("%d", &foo);
    a[i] = foo;
  }
  long long z = 0;
  int up = 0;
  for (int i = 0; i < n; i++) {
    z += a[i];
    b[i] = z;
    if (z % 2 != 0) {
      break;
    }
    up++;
    z /= 2;
  }
  long long value = 0;
  int ans = 0;
  for (int i = n - 1; i >= 0; i--) {
if (i <= up) {
      long long tmp = value * 2 + b[i];
      long long z = a[i] - tmp;
      if (-k <= z && z <= k && (i != n - 1 || z != 0)) {
        ans++;
      }
    }
    value = value * 2 + a[i];
    if (value < -inf || value > inf) {
break;
}
}
printf("%d\n", ans);
return 0;
}