#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
using namespace std;

static FILE *fr, *fw;

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

// Declaring functions

//MIOOOOO CODICEEEEE

//FUNZIONE DA MODIFICAREEEEEEEEEEEEEEEEEEEEEEEEEE
//selezione binaria per capire il numero di b perfetto
int quadri(int N, long long M, int V[]) {
    int Ii = 0; //punto di inizio
    int If = N; //punto di fine
    while (Ii < If) {
      int mid = (Ii+If+1)/2;
      
    
      long long tot=0;
      for (int ib=0; ib<mid; ib++) {
            tot += V[ib];
          }

      bool b=(tot<=M);
      
      for(int i=0; i<N-mid+1; i++) { //per ogni quadro da cui potrei partire (quindi senza sforare)
        //cout<<"variazione"<<i<<endl;
        tot = tot - V[i-1] + V[i+mid-1];
        if (tot>M) {
          b=false;
          break;
        }

      if (b) {
        Ii = mid;
      } else {
        If = mid-1;
      }
      }
      
      
    }
    //quando esce da questo while vuol dire che Ii = If e questo è il valore ottimale di B
    return Ii;

}
/*
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;
}*/