#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, const T &b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, const T &b) {
  if (b > a) a = b;
}
const int inf = 1e9 + 10;
const int maxn = 2e5 + 10;
int n, bit[maxn];
long long t, a[maxn];
vector<long long> v;
int sum(int i) {
  int s = 0;
  while (i < maxn) {
    s += bit[i];
    i += i & -i;
  }
  return s;
}
void add(int i) {
  while (i > 0) {
    bit[i]++;
    i -= i & -i;
  }
}
int main() {
  scanf("%d%lld", &n, &t);
  v.push_back(0);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
    a[i] += a[i - 1];
    v.push_back(a[i]);
  }
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
  long long ans = 0;
  int ind = lower_bound(v.begin(), v.end(), 0ll) - v.begin();
  add(ind + 1);
  for (int i = 1; i <= n; i++) {
    ind = upper_bound(v.begin(), v.end(), a[i] - t) - v.begin();
    ans += sum(ind + 1);
    ind = lower_bound(v.begin(), v.end(), a[i]) - v.begin();
    add(ind + 1);
  }
  printf("%lld\n", ans);
  return 0;
}
