#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include<iostream>
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)/2;
      
      //se è oltre la lista
      if (mid==0) {
        return 0;
        break;
      }

      int tot=0;
  for(int i=0; i<N-B_prova+1; i++) { //per ogni quadro da cui potrei partire (quindi senza sforare)
    //cout<<"variazione"<<i<<endl;
    if (tot==0) { //se non ho ancora calcolato niente
      for (int ib=0; ib<B_prova; ib++) {
        tot += V[ib];
      }
    } else { //se avevo già calcolato il precedente lo sfrutto
      //cout<<"vx"<<V[i-1]<<endl;
      //cout<<"v_add"<<i+B_prova<<endl;
      tot = tot - V[i-1] + V[i+B_prova-1];
    }
    //cout<<tot<<endl;
    //controllo rispetto ad m
    if (tot>M) {
      If = mid-1;
    }
  }
  Ii = mid;
      
      
    }
    //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;
}*/