#include <bits/stdc++.h>
#define all(v) (v).begin(), (v).end()
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
#define repd(i, r, l) for (int i = r; i >= l; --i)
#define _unique(x) (x).resize(unique((x).begin(), (x).end()) - (x).begin());
#define sz(v) (int)(v).size()
#define fi first
#define se second
#define pb push_back
#define pf push_front
#define mp make_pair
#define eps double(1e-9)
#define vii vector<int>
#define pii pair<int,int>
#define p2i pair<int,pii>
#define endl '\n'
using namespace std;
const int N = 1e6 + 5;
const int MN = 2e3 + 5;
const int mod = 1e9 + 7;
const int inf = 1e18 + 7;
const bool Emily = false;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rnd(int l, int r) {
return l+rng()%(r-l+1);
}
bool minimize(int &a, int b) {
if (a > b) {
a = b;
return 1;
}
return 0;
}
bool maximize(int &a, int b) {
if (a < b) {
a = b;
return 1;
}
return 0;
}
int n, k;
int a[N];
namespace sub12 {
int pre[N];
int sum(int l, int r) {
return pre[r] - pre[l - 1];
}
int solve(void) {
rep(i, 1, n) pre[i] = pre[i - 1] + a[i];
int res = 0;
rep(i, 1, n) rep(j, i, n) if (sum(i, j) <= k) ++res;
return res;
}
}
namespace AC {
int pre[N];
int sum(int l, int r) {
return pre[r] - pre[l - 1];
}
int solve(void) {
rep(i, 1, n) pre[i] = pre[i - 1] + a[i];
int res = 0;
rep(i, 1, n) {
int l = i, r = n, j = -1;
while (l <= r) {
int mid = (l + r) >> 1;
if (sum(i, mid) <= k) {
l = mid + 1;
j = mid;
} else r = mid - 1;
}
if (j == -1) continue;
res += (j - i + 1);
}
return res;
}
}
void checker(void) {
int ntest = 100;
while (ntest-- ) {
n = rnd(100, 10000); k = rnd(1e4, 1e8);
rep(i, 1, n) a[i] = rnd(1, 1e7);
if (sub12::solve() != AC::solve()) {
cout << "WRONG ANSWER" << endl;
return ;
}
}
cout << "AC" << endl;
}
void solve(void) {
cin >> n >> k;
rep(i, 1, n) cin >> a[i];
if (n <= 1000) {
cout << sub12::solve();
return ;
}
cout << AC::solve();
}
signed main()
{
#define task "SUBSEQ"
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
if (Emily) {
int t; cin >> t;
while (t-- ) solve();
} else solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgYWxsKHYpICh2KS5iZWdpbigpLCAodikuZW5kKCkKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcmVwKGksIGwsIHIpIGZvciAoaW50IGkgPSBsOyBpIDw9IHI7ICsraSkKI2RlZmluZSByZXBkKGksIHIsIGwpIGZvciAoaW50IGkgPSByOyBpID49IGw7IC0taSkKI2RlZmluZSBfdW5pcXVlKHgpICh4KS5yZXNpemUodW5pcXVlKCh4KS5iZWdpbigpLCAoeCkuZW5kKCkpIC0gKHgpLmJlZ2luKCkpOwojZGVmaW5lIHN6KHYpIChpbnQpKHYpLnNpemUoKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGVwcyBkb3VibGUoMWUtOSkKI2RlZmluZSB2aWkgdmVjdG9yPGludD4KI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHAyaSBwYWlyPGludCxwaWk+CiNkZWZpbmUgZW5kbCAnXG4nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAxZTYgKyA1Owpjb25zdCBpbnQgTU4gPSAyZTMgKyA1Owpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IGluZiA9IDFlMTggKyA3Owpjb25zdCBib29sIEVtaWx5ID0gZmFsc2U7CgptdDE5OTM3IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwppbnQgcm5kKGludCBsLCBpbnQgcikgewogICAgcmV0dXJuIGwrcm5nKCklKHItbCsxKTsKfQoKYm9vbCBtaW5pbWl6ZShpbnQgJmEsIGludCBiKSB7CiAgICBpZiAoYSA+IGIpIHsKICAgICAgICBhID0gYjsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiAwOwp9Cgpib29sIG1heGltaXplKGludCAmYSwgaW50IGIpIHsKICAgIGlmIChhIDwgYikgewogICAgICAgIGEgPSBiOwogICAgICAgIHJldHVybiAxOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCmludCBuLCBrOwppbnQgYVtOXTsKCm5hbWVzcGFjZSBzdWIxMiB7CiAgICBpbnQgcHJlW05dOwogICAgaW50IHN1bShpbnQgbCwgaW50IHIpIHsKICAgICAgICByZXR1cm4gcHJlW3JdIC0gcHJlW2wgLSAxXTsKICAgIH0KCiAgICBpbnQgc29sdmUodm9pZCkgewogICAgICAgIHJlcChpLCAxLCBuKSBwcmVbaV0gPSBwcmVbaSAtIDFdICsgYVtpXTsKCiAgICAgICAgaW50IHJlcyA9IDA7CiAgICAgICAgcmVwKGksIDEsIG4pIHJlcChqLCBpLCBuKSBpZiAoc3VtKGksIGopIDw9IGspICsrcmVzOwogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn0KCm5hbWVzcGFjZSBBQyB7CiAgICBpbnQgcHJlW05dOwogICAgaW50IHN1bShpbnQgbCwgaW50IHIpIHsKICAgICAgICByZXR1cm4gcHJlW3JdIC0gcHJlW2wgLSAxXTsKICAgIH0KCiAgICBpbnQgc29sdmUodm9pZCkgewogICAgICAgIHJlcChpLCAxLCBuKSBwcmVbaV0gPSBwcmVbaSAtIDFdICsgYVtpXTsKCiAgICAgICAgaW50IHJlcyA9IDA7CiAgICAgICAgcmVwKGksIDEsIG4pIHsKICAgICAgICAgICAgaW50IGwgPSBpLCByID0gbiwgaiA9IC0xOwoKICAgICAgICAgICAgd2hpbGUgKGwgPD0gcikgewogICAgICAgICAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgICAgICAgICAgICAgIGlmIChzdW0oaSwgbWlkKSA8PSBrKSB7CiAgICAgICAgICAgICAgICAgICAgbCA9IG1pZCArIDE7CiAgICAgICAgICAgICAgICAgICAgaiA9IG1pZDsKICAgICAgICAgICAgICAgIH0gZWxzZSByID0gbWlkIC0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGogPT0gLTEpIGNvbnRpbnVlOwogICAgICAgICAgICByZXMgKz0gKGogLSBpICsgMSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn0KCnZvaWQgY2hlY2tlcih2b2lkKSB7CiAgICBpbnQgbnRlc3QgPSAxMDA7CiAgICB3aGlsZSAobnRlc3QtLSApIHsKICAgICAgICBuID0gcm5kKDEwMCwgMTAwMDApOyBrID0gcm5kKDFlNCwgMWU4KTsKICAgICAgICByZXAoaSwgMSwgbikgYVtpXSA9IHJuZCgxLCAxZTcpOwoKICAgICAgICBpZiAoc3ViMTI6OnNvbHZlKCkgIT0gQUM6OnNvbHZlKCkpIHsKICAgICAgICAgICAgY291dCA8PCAiV1JPTkcgQU5TV0VSIiA8PCBlbmRsOwogICAgICAgICAgICByZXR1cm4gOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8ICJBQyIgPDwgZW5kbDsKfQoKdm9pZCBzb2x2ZSh2b2lkKSB7CiAgICBjaW4gPj4gbiA+PiBrOwogICAgcmVwKGksIDEsIG4pIGNpbiA+PiBhW2ldOwoKICAgIGlmIChuIDw9IDEwMDApIHsKICAgICAgICBjb3V0IDw8IHN1YjEyOjpzb2x2ZSgpOwogICAgICAgIHJldHVybiA7CiAgICB9CgogICAgY291dCA8PCBBQzo6c29sdmUoKTsKfQoKc2lnbmVkIG1haW4oKQp7CiAgICAjZGVmaW5lIHRhc2sgIlNVQlNFUSIKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKCiAgICBpZiAoRW1pbHkpIHsKICAgICAgICBpbnQgdDsgY2luID4+IHQ7CiAgICAgICAgd2hpbGUgKHQtLSApIHNvbHZlKCk7CiAgICB9IGVsc2Ugc29sdmUoKTsKCiAgICByZXR1cm4gMDsKfQo=