#include <bits/stdc++.h>
using namespace std;
int dp[6000][6000];
inline int to_mod(long long n) {
  return n >= 0 ? n % 998244353 : 998244353 + n % 998244353;
}
inline int madd(int a, int b) { return (a + b) % 998244353; }
inline int msub(int a, int b) {
  int t = a - b;
  return t >= 0 ? t : 998244353 + t;
}
inline int mmul(int a, int b) { return (int)((long long)a * b % 998244353); }
inline int mpow(int a, int b) {
  int r = 1;
  for (; b != 0; b >>= 1) {
    if (b & 1) r = mmul(r, a);
    a = mmul(a, a);
  }
  return r;
}
inline int minv(int a) { return mpow(a, 998244353 - 2); }
inline int mdiv(int a, int b) { return mmul(a, minv(b)); }
int n, s, a[3000];
void show() {
  for (int i = 0; i < (int)(n); i++) {
    for (int j = 0; j < (int)(s); j++) {
      printf("%d ", dp[i][j]);
    }
    puts("");
  }
}
int main() {
  cin >> n >> s;
  for (int i = 0; i < (int)(n); i++) cin >> a[i];
  int res = 0;
  for (int i = 0; i < (int)(n); i++) {
    int t = a[i];
    if (t == s) {
      res += (i + 1) * (n - i);
    } else if (t < s) {
      dp[i][t] += i + 1;
    }
    if (i == 0) continue;
    for (int j = 0; j < (int)(s); j++) {
      dp[i][j] += dp[i - 1][j];
      if (j + t == s) {
        res += dp[i - 1][j] * (n - i);
      } else if (j + t < s) {
        dp[i][j + t] += dp[i - 1][j];
      }
    }
  }
  cout << res << endl;
}
