#include <bits/stdc++.h>
using namespace std;
int mul(int a, int b) { return ((long long)a * b) % 998244353; }
int add(int a, int b) { return ((long long)a + b) % 998244353; }
int n, a[3000];
int cache[3001][3001];
int count(int index, int s, vector<int> as) {
  if (s < 0) {
    return 0;
  }
  if (s == 0 && index <= n) {
    ;
    for (auto x : as) {
      ;
    };
    return n - (index + 1) + 2;
  }
  if (index >= n) {
    return 0;
  }
  if (cache[index][s] >= 0) {
    return cache[index][s];
  }
  as.push_back(a[index]);
  int ans1 = count(index + 1, s - a[index], as);
  as.pop_back();
  int ans2 = count(index + 1, s, as);
  return cache[index][s] = add(ans1, ans2);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int s;
  cin >> n >> s;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int ans = 0;
  for (int index = 0; index < n + 1; index++) {
    fill_n(cache[index], s + 1, -1);
  }
  for (int left = 0; left < n; left++) {
    vector<int> as;
    as.push_back(a[left]);
    int ans1 = mul((left + 1), count(left + 1, s - a[left], as));
    ;
    ans = add(ans, ans1);
  }
  cout << ans;
}
