human
Consider the function p(x), where x is an array of m integers, which returns an array y consisting of m + 1 integers such that yi is equal to the sum of first i elements of array x (0 ≤ i ≤ m).

You have an infinite sequence of arrays A0, A1, A2..., where A0 is given in the input, and for each i ≥ 1 Ai = p(Ai - 1). Also you have a positive integer k. You have to find minimum possible i such that Ai contains a number which is larger or equal than k.

Input

The first line contains two integers n and k (2 ≤ n ≤ 200000, 1 ≤ k ≤ 1018). n is the size of array A0.

The second line contains n integers A00, A01... A0n - 1 — the elements of A0 (0 ≤ A0i ≤ 109). At least two elements of A0 are positive.

Output

Print the minimum i such that Ai contains a number which is larger or equal than k.

Examples

Input

2 2
1 1

Output

1

Input

3 6
1 1 1

Output

2

Input

3 1
1 0 1

Output

0
n, k
assistant
#Here is Python code to find minimum possible i such that Ai contains a number which is larger or equal than k.
= map(int, input().split(" "))
l = map(int, input().split(" "))

v = []
for x in l:
    if x != 0 or v:
        v.append(x)

def bruteforce(v, k):
    ret = 0
    while True:
        accm = 0
        for i in range(len(v)):
            if v[i] >= k: return ret
            accm += v[i]
            v[i] = accm
        ret += 1
    return ret

def smarty(v, k):
    def triang(x):
        return x*(x+1)//2
    l, r = 0, 10**18
    ans = 10**18
    while l<=r:
        h = (l+r)//2
        f0 = v[0]
        f1 = h*v[0] + v[1]
        f2 = triang(h)*v[0] + h*v[1] + v[0] if n == 3 else 0
        if max(f0, f1, f2) >= k:
            r = h-1
            ans = min(ans, h)
        else:
            l = h+1
    return ans

n = len(v)
if n>3:
    print(bruteforce(v, k))
else:
    print(smarty(v, k))