#include <bits/stdc++.h>
using namespace std;
const double PI = 3.14159265358979323846;
const double EPS = 1e-15;
const int INF = 1e9 + 7;
const long long LINF = 8e18 + 7;
const int N = 2e5 + 7;
vector<long long> t[4 * N];
int a[N];
long long s[N];
void build(int v, int L, int R) {
  if (L + 1 == R) {
    t[v].push_back(s[L]);
    return;
  }
  int M = L + R >> 1;
  build(v << 1, L, M);
  build(v << 1 | 1, M, R);
  t[v].resize(t[v << 1].size() + t[v << 1 | 1].size());
  merge(t[v << 1].begin(), t[v << 1].end(), t[v << 1 | 1].begin(),
        t[v << 1 | 1].end(), t[v].begin());
}
int get(int v, int L, int R, int l, int r, long long val) {
  if (L == l && R == r) {
    return t[v].end() - upper_bound(t[v].begin(), t[v].end(), val);
  }
  int M = L + R >> 1;
  int ans = 0;
  if (l < M) {
    ans += get(v << 1, L, M, l, min(M, r), val);
  }
  if (r > M) {
    ans += get(v << 1 | 1, M, R, max(l, M), r, val);
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  long long t;
  cin >> n >> t;
  for (int i = 0; i < int(n); ++i) {
    cin >> a[i];
    s[i + 1] = a[i] + s[i];
  }
  build(1, 0, n + 1);
  long long ans = 0;
  for (int i = 0; i < int(n); ++i) {
    ans += get(1, 0, n + 1, 0, i + 1, s[i + 1] - t);
  }
  cout << ans << endl;
}
