#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
#define pb push_back
#define ll int
#define el "\n"
#define alla(a,n) a+1,a+n+1
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define fu(i,a,b) for(ll i=a;i<=b;i++)
#define fud(i,a,b) for(ll i=a;i>=b;i--)
const ll MOD=1e9+7 ;//1234567891;
const ll inf=1e18;
const ll base = 311;
const ll N=1e6+5;
const ll N1=1e3+5;
/*🥑*/
template <class T> bool minimize(T &x, T y){return (x > y ? x = y, 1 : 0);}
template <class T> bool maximize(T &x, T y){return (x < y ? x = y, 1 : 0);}
template <class T> void add(T &x, ll y){x += y; if(x >= MOD) x -= MOD;}
template <class T> void sub(T &x, T y){x -= y; if(x < 0) x += MOD;}
/*v*/
int dx[8] = {1, -1, 0, 0, 1, 1, -1, -1},
dy[8] = {0, 0, 1, -1, 1, -1, 1, -1};
ll n;
long long S,s[N];
ll a[N],nxt[N],dd[N],cc[N],res[N];
signed main(void)
{
#define TASK "4"
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);srand(time(0));
if(fopen(TASK".INP","r"))
{
freopen(TASK".inp" ,"r",stdin) ; freopen(TASK".out" ,"w",stdout);
}
cin>>n>>S;
fu(i,1,n) cin>>a[i],s[i]=s[i-1]+a[i];
long long ans=0;
fu(i,1,n)
{
ll j=upper_bound(s+i,s+n+1,s[i-1]+S)-s;
nxt[i]=j;
}
fud(i,n,1)
{
ll cur=i,cnt=0;
ll nxt_pos=nxt[cur];
cc[i]=cc[nxt_pos]+1;
res[i]=res[nxt_pos]+n-i+1;
ans+=res[i];
}
cout<<ans;
// số MOD bro
cerr<<el<<"Time: "<<0.001*clock()<<"s"<<el;return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKCiNkZWZpbmUgcGIgIHB1c2hfYmFjayAgCiNkZWZpbmUgbGwgIGludAojZGVmaW5lIGVsICAiXG4iCiNkZWZpbmUgYWxsYShhLG4pICBhKzEsYStuKzEKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh2KSAgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBmdShpLGEsYikgIGZvcihsbCBpPWE7aTw9YjtpKyspCiNkZWZpbmUgZnVkKGksYSxiKSAgZm9yKGxsIGk9YTtpPj1iO2ktLSkKCmNvbnN0IGxsIE1PRD0xZTkrNyA7Ly8xMjM0NTY3ODkxOwpjb25zdCBsbCBpbmY9MWUxODsKY29uc3QgbGwgYmFzZSA9IDMxMTsKY29uc3QgbGwgTj0xZTYrNTsKY29uc3QgbGwgTjE9MWUzKzU7Ci8q8J+lkSovCnRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG1pbmltaXplKFQgJngsIFQgeSl7cmV0dXJuICh4ID4geSA/IHggPSB5LCAxIDogMCk7fQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBtYXhpbWl6ZShUICZ4LCBUIHkpe3JldHVybiAoeCA8IHkgPyB4ID0geSwgMSA6IDApO30KdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgYWRkKFQgJngsIGxsIHkpe3ggKz0geTsgaWYoeCA+PSBNT0QpIHggLT0gTU9EO30KdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgc3ViKFQgJngsIFQgeSl7eCAtPSB5OyBpZih4IDwgMCkgeCArPSBNT0Q7fQovKnYqLwppbnQgZHhbOF0gPSB7MSwgLTEsIDAsIDAsIDEsIDEsIC0xLCAtMX0sCiAgICBkeVs4XSA9IHswLCAwLCAxLCAtMSwgMSwgLTEsIDEsIC0xfTsKCmxsIG47CmxvbmcgbG9uZyBTLHNbTl07CmxsIGFbTl0sbnh0W05dLGRkW05dLGNjW05dLHJlc1tOXTsKc2lnbmVkIG1haW4odm9pZCkKewogICAgI2RlZmluZSBUQVNLICAiNCIKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTtzcmFuZCh0aW1lKDApKTsgCiAgICBpZihmb3BlbihUQVNLIi5JTlAiLCJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5pbnAiICwiciIsc3RkaW4pIDsgZnJlb3BlbihUQVNLIi5vdXQiICwidyIsc3Rkb3V0KTsKICAgIH0KCiAgICBjaW4+Pm4+PlM7CiAgICBmdShpLDEsbikgY2luPj5hW2ldLHNbaV09c1tpLTFdK2FbaV07CiAgICBsb25nIGxvbmcgYW5zPTA7CiAgICBmdShpLDEsbikKICAgIHsKICAgICAgICBsbCBqPXVwcGVyX2JvdW5kKHMraSxzK24rMSxzW2ktMV0rUyktczsKICAgICAgICBueHRbaV09ajsKICAgIH0KICAgIGZ1ZChpLG4sMSkKICAgIHsKICAgICAgICBsbCBjdXI9aSxjbnQ9MDsKICAgICAgICBsbCBueHRfcG9zPW54dFtjdXJdOwogICAgICAgIGNjW2ldPWNjW254dF9wb3NdKzE7CiAgICAgICAgcmVzW2ldPXJlc1tueHRfcG9zXStuLWkrMTsKICAgICAgICBhbnMrPXJlc1tpXTsKCiAgICB9CiAgICBjb3V0PDxhbnM7CiAgICAKICAgIC8vIHPhu5EgTU9EIGJybwogICAgY2Vycjw8ZWw8PCJUaW1lOiAiPDwwLjAwMSpjbG9jaygpPDwicyI8PGVsO3JldHVybiAwOwp9