# https://atcoder.jp/contests/abc159/submissions/11139418

def main():
    MOD = 998244353

    N, S = map(int, input().split())
    *a, = map(int, input().split())

    dp = [[[0] * 3 for _ in range(S + 1)] for _ in range(N + 1)]
    dp[0][0][0] = 1

    for i, x in enumerate(a):
        for j in range(S + 1):
            # 選択しない
            prev = dp[i][j]

            dp[i + 1][j][0] = (dp[i + 1][j][0] + prev[0]) % MOD
            dp[i + 1][j][1] = (dp[i + 1][j][1] + prev[0] + prev[1]) % MOD
            dp[i + 1][j][2] = (dp[i + 1][j][2] + prev[0] + prev[1] + prev[2]) % MOD

            # 選択する
            if j - x < 0: continue
            prev_x = dp[i][j - x]

            dp[i + 1][j][1] = (dp[i + 1][j][1] + prev_x[0] + prev_x[1]) % MOD
            dp[i + 1][j][2] = (dp[i + 1][j][2] + prev_x[0] + prev_x[1]) % MOD

    ret = dp[N][S][2]
    print(ret)


if __name__ == '__main__':
    main()

# 0: 開始していないが開始して選択することができる
# 1: 開始しており選択を選べる
# 2: 閉じており選択できない
