#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector < int > vi;
typedef long long int int64;
typedef unsigned long long uLL;
#define MEM(a,b) memset(a,(b),sizeof(a))
#define tr(c,it) for(typeof((c).begin()) it = (c).begin(); it != (c).end(); it++)
#define present(c,x) ((c).find(x) != (c).end()) 
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define ain(a,n) int ((a)[(n)]); for(int i=0; i<(n); i++) cin>>((a)[i])
#define FOR(i,n) for(int i=0;i<n;i++)
#define FU(i,a,n) for(int i=a;i<=n;i++)
#define FD(i,a,n) for(int i=n;i>=a;i--)
#define GI(n) scanf("%d",&(n))
#define mod 1000000007
#define INF 2100000000
#define MAXN 500007

int n;
ll dp[MAXN],h[MAXN],H[MAXN],m;

ll solve(int idx){
	if(idx >= n) return 1;
	ll ret = dp[idx];
	if(ret != -1) return ret;
	ret = 0;
	for(int i=idx+1;i<=n;i++){
		if(H[i]-H[idx] <= m){
			ret += (solve(i));
		}
	}
	dp[idx] = ret;
	return ret;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	MEM(dp,-1);
	cin>>n>>m;
	FOR(i,n){
		cin>>h[i];
	}
	FU(i,1,n){
		H[i] = H[i-1] + h[i-1];
	//	cout<<H[i]<<endl;
	}
	
	cout<<solve(0)<<endl;	
	return 0;
}