#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using Graph = vector<vector<int>>;
const ll MOD = 1000000007;
const ll INF = 10000000000000000;
vector<int> x4 = {0, 1, 0, -1}, x8 = {0, 1, 1, 1, 0, -1, -1, -1};
vector<int> y4 = {1, 0, -1, 0}, y8 = {1, 1, 0, -1, -1, -1, 0, 1};
template <class T>
struct edge {
  int from, to;
  T cost;
};
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline T powerM(T a, T b) {
  if (b == 0) return 1;
  T tmp = powerM(a, b / 2);
  if (b % 2 == 0)
    return tmp * tmp % MOD;
  else
    return tmp * tmp % MOD * a % MOD;
}
template <class T>
inline T power(T a, T b, T m) {
  if (b == 0) return 1;
  T tmp = power(a, b / 2, m);
  if (b % 2 == 0)
    return tmp * tmp % m;
  else
    return tmp * tmp % m * a % m;
}
template <class T>
inline T gcd(T a, T b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
template <class T>
inline T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <class T>
inline T extgcd(T a, T b, T& x, T& y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  T d = extgcd(b, a % b, y, x);
  y -= a / b * x;
  return d;
}
int N, S;
const ll MOD2 = 998244353;
int main() {
  cin >> N >> S;
  vector<int> A(N);
  for (int i = 0; i < (int)(N); i++) cin >> A[i];
  vector<vector<vector<int>>> dp(N + 1, vector<vector<int>>(S, vector<int>()));
  ll res = 0;
  for (int i = 0; i < N; i++) {
    if (A[i] == S) {
      res += (i + 1) * (N - i);
      res %= MOD2;
    }
    for (int j = 0; j < S; j++) {
      if (j == A[i]) {
        dp[i + 1][j].push_back(i);
      }
      if (dp[i][j].size() > 0) {
        for (int v : dp[i][j]) {
          dp[i + 1][j].push_back(v);
          if (j + A[i] == S) {
            res += (v + 1) * (N - i);
            res %= MOD2;
          } else if (j + A[i] < S) {
            dp[i + 1][j + A[i]].push_back(v);
          }
        }
      }
    }
  }
  cout << res << endl;
}
