早上月赛的C,60分求调/kel
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define M 998244353
ll n,k,a[1000009],m,ans;
ll p(ll x){
if((2*x+1)%3==0) return (x*(x+1)/2)%M*((2*x+1)/3)%M;
else return(x*(x+1)/6)%M*(2*x+1)%M;
}
int main(){
std::ios::sync_with_stdio(false);
//freopen("ex.in","r",stdin);
//freopen("ex.out","w",stdout);
cin>>n>>k;
for(ll i=1;i<=n;i++){
cin>>a[i];
if(a[i]>=0&&a[i-1]<0) m=i-1;
}
for(ll i=m+1;i<=n;i++)
ans+=p(a[i]+k)-p(a[i]),ans=(ans+M)%M;
for(ll i=1;i<=m;i++){
ans+=(min(k,-2*a[i]-2)*(-1-a[i])*(-1-a[i]))%M,ans=(ans+M)%M;
if(k-(-2*a[i]-2)>0) ans+=p(a[i]+k)-p(-2-a[i]),ans=(ans+M)%M;
}
cout<<ans;
return 0;
}