#pragma GCC optimize("O3")
char buf[13000];sz;
inline int rd(){
	int ret=0;
	for(;;){
		char k=buf[sz++];
		if(k<'0')break;
		ret=ret*10+k-'0';
	}
	return ret;
}
int i,a,ans,v[3001];
const int mod=998244353;
int main(){
  read(0,buf,13000);
  int N=rd();
  int S=rd();
  for(int j=0;j<N;j++){
    a=rd();
    ++v[0];
    for(i=S;i>=a;--i){
      v[i]+=v[i-a];
      v[i]-=(v[i]>=mod)*mod;
    }
    ans+=v[S];
    ans-=(ans>=mod)*mod;
  }
  printf("%d",ans);
}