#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, a[N];
long long t, ans;
map<pair<int, int>, pair<vector<long long>, vector<long long>>> v;
long long conquer(int l, int r) {
  if (l == r) {
    if (a[l] < t) ans++;
    v[make_pair(l, l)].first.push_back(a[l]);
    v[make_pair(l, l)].second.push_back(a[l]);
    return a[l];
  }
  pair<int, int> ix = make_pair(l, r), il = make_pair(l, (l + r) / 2),
                 ir = make_pair((l + r) / 2 + 1, r);
  long long tl = conquer(il.first, il.second),
            tr = conquer(ir.first, ir.second);
  int sz = v[il].second.size();
  int j = v[ir].first.size() - 1;
  for (int i = 0; i < sz; i++) {
    while (v[ir].first[j] + v[il].second[i] >= t)
      if (--j < 0) goto end1;
    ans += j + 1;
  }
end1:
  for (int i = 0; i < sz; i++) v[il].second[i] += tr;
  sz = v[ir].first.size();
  for (int i = 0; i < sz; i++) v[ir].first[i] += tl;
  merge(v[il].first.begin(), v[il].first.end(), v[ir].first.begin(),
        v[ir].first.end(), back_inserter(v[ix].first));
  merge(v[il].second.begin(), v[il].second.end(), v[ir].second.begin(),
        v[ir].second.end(), back_inserter(v[ix].second));
  return tl + tr;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> t;
  for (int i = 0; i < n; i++) cin >> a[i];
  conquer(0, n - 1);
  cout << ans;
}
