#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7;
int add(int a, int b) {
  if ((a += b) >= P) a -= P;
  return a;
}
int sub(int a, int b) {
  if ((a -= b) < 0) a += P;
  return a;
}
int mul(int a, int b) { return 1ll * a * b % P; }
int kpow(int a, int b) {
  int r = 1;
  for (; b; b >>= 1, a = mul(a, a)) {
    if (b & 1) r = mul(r, a);
  }
  return r;
}
const int N = 202020;
int n;
int a[N];
long long t;
long long pre[N];
vector<long long> V;
int find(long long x) {
  return lower_bound(V.begin(), V.end(), x) - V.begin() + 1;
}
struct Seg {
  static const int N = ::N << 2;
  int sum[N];
  void upd(int p, int l, int r, int rt) {
    ++sum[rt];
    if (l == r) return;
    int mid = l + r >> 1;
    if (p <= mid)
      upd(p, l, mid, rt << 1);
    else
      upd(p, mid + 1, r, rt << 1 | 1);
  }
  int qry(int L, int R, int l, int r, int rt) {
    if (L > R) return 0;
    if (L <= l && r <= R) return sum[rt];
    int mid = l + r >> 1, ans = 0;
    if (L <= mid) ans += qry(L, R, l, mid, rt << 1);
    if (R > mid) ans += qry(L, R, mid + 1, r, rt << 1 | 1);
    return ans;
  }
} seg;
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  cin >> n >> t;
  for (int i = (1); i < (n + 1); i++)
    cin >> a[i], pre[i] = pre[i - 1] + a[i], V.push_back(pre[i]);
  V.push_back(0);
  sort(V.begin(), V.end());
  V.erase(unique(V.begin(), V.end()), V.end());
  long long ans = 0;
  seg.upd(find(0), 1, (int)V.size(), 1);
  for (int i = (1); i < (n + 1); i++) {
    int p = upper_bound(V.begin(), V.end(), pre[i] - t) - V.begin() + 1;
    ans += seg.qry(p, (int)V.size(), 1, (int)V.size(), 1);
    seg.upd(find(pre[i]), 1, (int)V.size(), 1);
  }
  cout << ans << "\n";
  return 0;
}
