#include<bits/stdc++.h> usingnamespace std; #define int long long inlineintread(){int f=1,x=0;char ch=getchar();while(ch<'0'|| ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;} #define N 800010 //#define M #define mo 998244353 structnode { int x, y; }ax[N]; int n, m, i, j, k, T; int a[N], b[N], c[N], d[N], x[N], s[N], mp[N]; int ans, L, R, sx[N], sy[N]; map<int, int>dp[N]; int sum, anss;
boolcmp(node x, node y) { return x.x<y.x; }
intkuai(int a, int b) { int ans=1; while(b) { if(b&1) ans=ans*a%mo; a=a*a%mo; b>>=1; } return ans; }
//int chu(int a, int b) //{ // return a*kuai(b, mo-2)%mo; //}
//int pan(int l, int r, int k) //{ // int i, j, ans=0; // for(i=1; i<=r; ++i) // for(j=i-k+1; j<=i; ++j) // { // ans+=chu(s[i], s[j-1]); // ans=(ans+mo)%mo; // } // return ans; //}
intpanp(int n, int l, int r) { int i, j, ans=0; for(i=l; i<=n; ++i) { sum=(sy[i-l]-sy[max(1ll, i-r+1)-2])%mo; ans+=s[i]*sum%mo; ans=(ans+mo)%mo; } return ans; }