#include <bits/stdc++.h>
using namespace std;
template <typename T>
void dbg(T t) {
  cerr << t << endl;
}
template <typename T, typename... Args>
void dbg(T t, Args... args) {
  cerr << t << " ";
  dbg(args...);
}
vector<long long> tree[800000];
long long t[200000];
void build(int id, int l, int r) {
  if (l == r) {
    tree[id].push_back(t[l]);
    return;
  }
  int mid = (l + r) >> 1;
  build(id << 1, l, mid);
  build(id << 1 | 1, mid + 1, r);
  tree[id].resize(r - l + 1);
  merge(tree[id << 1].begin(), tree[id << 1].end(), tree[id << 1 | 1].begin(),
        tree[id << 1 | 1].end(), tree[id].begin());
}
int get(int id, int l, int r, int ql, int qr, long long v) {
  if (qr < l || ql > r) return 0;
  if (ql <= l && r <= qr) {
    auto it = upper_bound(tree[id].begin(), tree[id].end(), v - 1);
    return it - tree[id].begin();
  }
  int mid = (l + r) >> 1;
  return get(id << 1, l, mid, ql, qr, v) +
         get(id << 1 | 1, mid + 1, r, ql, qr, v);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  long long tt;
  cin >> n >> tt;
  int a[n];
  for (int i = 0; i < n; i++) cin >> a[i];
  t[0] = a[0];
  for (int i = 0; i < n - 1; i++) t[i + 1] = t[i] + a[i + 1];
  build(1, 0, n - 1);
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    ans += get(1, 0, n - 1, i, n - 1, tt);
    tt += a[i];
  }
  cout << ans << endl;
  return 0;
}
