#include <bits/stdc++.h>
using namespace std;
const long long Inf = 4e18;
const long long K = 62;
void add_self(long long& x, long long y) { x = min(x + y, Inf); }
long long mul(long long x, long long y) {
  if (!x || !y) return 0;
  if (Inf / x < y) return Inf;
  return x * y;
}
vector<vector<long long> > Zero(long long n, long long m) {
  return vector<vector<long long> >(n, vector<long long>(m, 0));
}
vector<vector<long long> > Ident(long long n) {
  vector<vector<long long> > Res = Zero(n, n);
  for (long long i = 0; i < n; i++) Res[i][i] = 1;
  return Res;
}
vector<vector<long long> > Multy(const vector<vector<long long> >& A,
                                 const vector<vector<long long> >& B) {
  assert(A[0].size() == B.size());
  vector<vector<long long> > Res = Zero(A.size(), B[0].size());
  for (long long i = 0; i < Res.size(); i++)
    for (long long j = 0; j < Res[0].size(); j++)
      for (long long k = 0; k < A[0].size(); k++)
        add_self(Res[i][j], mul(A[i][k], B[k][j]));
  return Res;
}
vector<vector<long long> > Power(const vector<vector<long long> >& A,
                                 long long k) {
  if (!k) return Ident(A.size());
  if (k & 1) return Multy(A, Power(A, k - 1));
  return Power(Multy(A, A), k >> 1);
}
const long long N = 200200;
long long a[N];
int main() {
  long long n, k;
  cin >> n >> k;
  for (long long i = 0; i < n; i++) scanf("%I64d", a + i);
  reverse(a, a + n);
  while (!a[n - 1]) n--;
  reverse(a, a + n);
  for (long long i = 0; i < n; i++)
    if (a[i] >= k) return cout << "0", 0;
  if (n > 3) {
    for (long long rep = 0;; rep++) {
      for (long long i = 0; i < n; i++)
        if (a[i] >= k) return cout << rep, 0;
      for (long long i = 1; i < n; i++) add_self(a[i], a[i - 1]);
    }
  }
  vector<vector<long long> > Base = Zero(1, n);
  vector<vector<long long> > Trans[K];
  for (long long i = 0; i < n; i++) Base[0][i] = a[i];
  Trans[0] = Zero(n, n);
  for (long long i = 0; i < n; i++)
    for (long long j = i; j < n; j++) Trans[0][i][j] = 1;
  for (long long r = 1; r < K; ++r)
    Trans[r] = Multy(Trans[r - 1], Trans[r - 1]);
  long long Ans = 0;
  for (long long jump = K - 1; ~jump; jump--) {
    vector<vector<long long> > Cur = Multy(Base, Trans[jump]);
    bool ok = false;
    for (long long i = 0; i < n; i++)
      if (Cur[0][i] >= k) {
        ok = true;
        break;
      }
    if (ok) continue;
    Ans += 1LL << jump;
    Base = Cur;
  }
  cout << Ans + 1;
}
