#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
long long n, s;
long long a[3010];
long long memo[3010][3010][2];
long long dp(long long i, long long num, long long start) {
  if (num == 0) {
    return n - i + 1;
  }
  if (memo[i][num][start] != -1) return memo[i][num][start];
  long long ans = 0;
  if (start == 0) {
    ans = dp(i + 1, num, 0);
    ans = (ans + dp(i + 1, num, 1)) % 998244353;
    if (num - a[i] >= 0) ans = (ans + dp(i + 1, num - a[i], 1)) % 998244353;
  } else {
    ans = dp(i + 1, num, 1);
    if (num - a[i] >= 0) ans = (ans + dp(i + 1, num - a[i], 1)) % 998244353;
  }
  return memo[i][num][start] = ans;
}
signed main() {
  cin >> n >> s;
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
  memset(memo, -1, sizeof(memo));
  cout << dp(0, s, 0) << endl;
  return 0;
}
