#include <bits/stdc++.h>
using namespace std;

static FILE *fr, *fw;

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

bool isBOk(int N, long long M, int V[], int B) {
    if (B==0) return true;
    int idxL = 0;
    int idxR = B;
    int sumCurr = 0;
    for (int i = 0; i < B; i++) {
      sumCurr+=V[i];
    }
    if (sumCurr>M) return false;
    idxR++;
    idxL++;
    for (; idxR < N; idxR++) {
        sumCurr-=V[idxL-1];
        sumCurr+=V[idxR];
        if(sumCurr > M) return false;
        idxL++;
    }
    return true;
    /*int sumCurr = 0;
    for (int i = 0; i < B; i++) {
      sumCurr+=V[i];
    }
    if (sumCurr>M) return false;
    for (int i = 1; i < N-1; i++) {
        sumCurr-=V[i-1];
        sumCurr+=V[i+B-1];
        if(sumCurr > M) return false;
    }
  return true;*/
}

// Declaring functions
int quadri(int N, long long M, int V[]) {
    int l = 0, r = N, mid;
    while (l<r) {
        mid = (l+r+1)/2;
        if (isBOk(N, M, V, mid)) {
          l = mid;
        } else {
          r = mid-1;
        }
    }
    return l;
}

/*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);
    int N, M;
    cin>>N>>M;
    int V[N];
    for (int i = 0; i < N; i++) cin>>V[i];
    cout<<quadri(N, M, V);
	return 0;
}*/
