#include <bits/stdc++.h>
using namespace std;
int maxsom(int mid, int N, int* V){
    int max_somma;
    for (int i=0; i<mid; i++){
        max_somma += V[i];
    }
    for (int i =1; i<N-mid+1;i++){
        // cerr<<max_somma<<endl;
        int temp_somma = max_somma;
        max_somma = max_somma - V[i-1] + V[i+mid-1];
        max_somma = max(max_somma, temp_somma);
            
    }
    return max_somma;
}

int quadri(int N, long long M, int* V){

    int start = 0;
    int end = N;
    int mid = 0;
    int lastmid = 0;
    
    if (N == 1) return V[0]<=M;
    while (start<end){
        mid = (end+start)/2;
        int max_somma = maxsom(mid, N, V);
        // cerr<<max_somma<<endl;
        
        // cerr<<start<<" "<<mid<<" "<<end<<endl;
        
        if (max_somma>M){
            if (start == 0 && end == 1){
                if (maxsom(start, N, V)<=M){
                    mid = start;
                }
                else{
                    start = mid;
                }
                end = start;
            }
            end = mid;
        }
        if (max_somma<M){
            if (start == N-1 && end == N){
                
                if (maxsom(end, N, V)<=M){
                    mid = end;
                }
                else end = mid;
            }
            start = mid;
            
        }
        if (max_somma == M) return mid;
        // cerr<<laststart <<" "<<lastmid <<" "<<lastend<<endl;
        if (mid == lastmid) break;
        lastmid = mid;
        
        
    }
    
    return mid;
}
