#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <vector>

static FILE *fr, *fw;

// Declaring variables
static int N;
static long long M;
static int* V;
static int B;

using namespace std;
using ll=long long;
vector<ll> prefix;
// Declaring functions
bool scorri(int N, ll M, int size){
    for(int i=0; i<N-size+1; i++){
        ll somma= prefix[i+size]-prefix[i];
        if(somma>M)return false;
    }
    
    return true;
}

int quadri(int N, long long M, int* V){
    prefix.resize(N+1);
    prefix[0]=0;
    for(int i=1; i<=N; i++){
        prefix[i]=prefix[i-1]+V[i-1];
    }
    
    int l=0;
    int r=N;
    int ans=0;
    
    while(l<=r){
        int mid = (l+r)/2;
        if(scorri(N,M, mid)){
            ans=max(ans, mid);
            l=mid+1;
        }
        else{
            r=mid-1;
        }
    }
    
    
    return ans;
}

/*int main() {
    fr = stdin;
    fw = stdout;

    // Iterators used in for loops
    int i0;

    // Reading input
    fscanf(fr, "%d %lld", &N, &M);
    V = (int*)malloc(N * sizeof(int));
    for (i0 = 0; i0 < N; i0++) {
        fscanf(fr, "%d", &V[i0]);
    }

    // Calling functions
    B = quadri(N, M, V);

    // Writing output
    fprintf(fw, "%d\n", B);
    
    fclose(fr);
    fclose(fw);
    return 0;
}
*/ 
