#include<bits/stdc++.h>
#define N 1000001
#define cf(a) pow(a, 2)
using namespace std;
const int mod=998244353;
int n, k, ans, pos=1, tmp;
int a[N];
int main()
{
scanf("%d%d",&n, &k);
for(int i(1);i<=n;i++) scanf("%d",&a[i]), ans=(ans+(int)cf(a[i]))%mod;
for(int i(2);i<=k;i++) {
for(int j=pos;j<=n;j++) {
if(abs(a[j]+i)>abs(a[j]+i-1)) {
pos=j;
int cnt=0, ext=ans%mod;
for(int l=pos;l<=n;l++) cnt=(cnt+(int)cf(a[l]+i)%mod)%mod;
ans=(ans+tmp+cnt);
tmp=abs(ans-ext)%mod;
ans=ans%mod;
}
}
}
printf("%d\n",ans);
return 0;
}
就是看当前这个数与前一个是分开还是不分开的贡献大