#include <iostream>
using namespace std;
#define int long long
const int mod = 998244353;
const int MX = 1e6 + 9;
int n, k, mid = -1;
int a[MX], possum = 0, posnum = 0, sqsum = 0;
int ans;
signed main() {
a[0] = -1;
cin >> n >> k;
for(int i = 1; i <= n; i++){
cin >> a[i];
if(a[i - 1] < 0 && a[i] >= 0) mid = i - 1;
if(a[i] >= 0) possum += a[i] * 2 + 1, possum %= mod, posnum++, sqsum += a[i] * a[i], sqsum %= mod;
else sqsum += (a[i] + 1) * (a[i] + 1), sqsum %= mod;
}
for(int m = 1; m <= k; m++){
sqsum += possum;
possum += 2 * posnum;
while(mid && -a[mid] - 1 < a[mid] + m) {
sqsum += (a[mid] + m) * (a[mid] + m) - (-a[mid] - 1) * (-a[mid] - 1);
possum += (a[mid] + m) << 1 | 1;
sqsum %= mod;
possum %= mod;
posnum++;
mid--;
}
ans += sqsum;
ans %= mod;
sqsum %= mod;
possum %= mod;
}
cout << ans;
return 0;
}
非常疑惑地 WA 了三个,好像没有人跟我一样?