#include #include #include #include #include using namespace std; using mint=atcoder::modint998244353; mint op(mint a,mint b){return a+b;} mint e(){return mint::raw(0);} mint mp(mint f,mint x){return f*x;} mint id(){return mint::raw(1);} int N; int A[2<<17],B[2<<17]; mint f(int K) { atcoder::lazy_segtreeseg(N); vectorinitA(N),initAB(N); for(int i=0;isegA(initA),segAB(initAB); mint ans=0; for(int i=0;i+K<=N;i++) { mint cur=segAB.prod(0,i)-seg.prod(0,i); seg.set(i,cur); int l=max(0,i-K); seg.apply(0,l,A[i]+B[i]); seg.apply(l,i+1,A[i]); ans+=cur*segA.prod(i,i+K)*segAB.prod(i+K,N); } return ans; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int K; cin>>N>>K; for(int i=0;i>A[i]; for(int i=0;i>B[i]; cout<<(f(K)-f(K+1)).val()<