#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;

// 检查是否存在长度为length的子串,其和至少为m
bool checkLength(int length, const vector<int>& candies, long long m) {
    int n = candies.size();
    // 计算初始窗口(前length个元素)的和
    long long window_sum = 0;
    for (int i = 0; i < length; i++) {
        window_sum += candies[i];
    }
    if (window_sum >= m) return true;
    
    // 滑动窗口检查所有长度为length的子串
    for (int i = length; i < n; i++) {
        window_sum = window_sum - candies[i - length] + candies[i];
        if (window_sum >= m) return true;
    }
    return false;
}

int main() {
    int n;
    long long m;  // 使用long long防止大数溢出
    cin >> n >> m;
    
    vector<int> candies(n);
    long long total = 0;
    for (int i = 0; i < n; i++) {
        cin >> candies[i];
        total += candies[i];
    }
    
    // 如果总甜度小于m,直接输出0
    if (total < m) {
        cout << 0 << endl;
        return 0;
    }
    
    int left = 1;       // 最小可能长度
    int right = n;      // 最大可能长度
    int result = n;     // 记录最小满足条件的长度
    
    // 二分查找最小满足条件的长度
    while (left <= right) {
        int mid = left + (right - left) / 2;  // 防止溢出
        if (checkLength(mid, candies, m)) {
            result = mid;        // 更新最小长度
            right = mid - 1;     // 尝试更小的长度
        } else {
            left = mid + 1;      // 需要更大的长度
        }
    }
    
    cout << result << endl;
    return 0;
}
/**************************************************************
	Problem: 2105
	User: hulaoshi
	Language: C++
	Result: Accepted
	Time:103 ms
	Memory:2972 kb
****************************************************************/