#include<bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define pii pair<int,int>
#define vpii vector< pair<int,int> >
#define mii map<int,int>
#define MOD 998244353
#define fr(i,k,n) for(int i=k;i<n;i++)
#define fl(i,k,n) for(int i=k;i>=n;i--)
using namespace std;
typedef long long ll;
int prime[100001]={};
void sieve()
{
	prime[0]=1;
	prime[1]=1;
	for(int i=0;i*i<100001;i++)
	{
		if(prime[i]==0)
		{
			for(int j=i*i;j<100001;j+=i)
			{
				prime[j]=1;
			}
		}
	}
}
ll binpow(ll a,ll b,ll m)
{
	ll res=1;
	while(b>0)
	{

	if(b&1)
	{
		res=res*a%m;
	}
	a=a*a%m;
	b>>=1;
   }
   return res;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,s;
cin>>n>>s;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
//b[0]=a[0];
ll dp[n][s+1]={};
for(int i=0;i<n;i++)
{
	dp[i][0]=1;
}
dp[0][a[0]]=1;
for(int i=1;i<n;i++)
{
	for(int j=1;j<=s;j++)
	{
		if(j-a[i]<0)
		dp[i][j]=dp[i-1][j];
		else
		dp[i][j]=dp[i-1][j]+dp[i-1][j-a[i]];
	}
}
for(int i=0;i<n;i++)
{
	for(int j=0;j<=s;j++)
	cout<<dp[i][j]<<" ";
	cout<<endl;
}
ll b[n+1]={};
for(int i=0;i<n;i++)
b[i+1]=dp[i][s];
int sum=0;
for(int i=1;i<=n;i++)
{
	for(int j=i;j<=n;j++)
    {
    	if(j==i && b[i]==s)
    	sum+=1;
    	else if(b[i]!=s)
	    sum+=(b[j]-b[i]);
	    else
	    sum+=(b[j]-b[i-1]);
    }
}
cout<<sum%MOD<<endl;
return 0;
}

