#include #include #include #include #include using namespace std; using mint=atcoder::modint998244353; long long N,A,K; int V[3<<17]; mint c[3<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>A>>K; if(N=1;i--)if(V[i]>0) { if(cur==0)ans+=i*2,cur=V[i]; else { cur+=V[i]; if(cur>K)ans+=i*2; cur%=K; } } cout<N%k;i--) { //ans+=2*(c[i]+v*j)*(i+k*j); ans0+=2*c[i]*i; ans1+=2*c[i]*k+2*v*i; ans2+=2*v*k; if(V[i]>0) { if(cur==0) { //ans+=2*(i+k*j) ans0+=2*i; ans1+=2*k; cur=V[i]; } else { cur+=V[i]; if(cur>K) { //ans+=2*(i+k*j) ans0+=2*i; ans1+=2*k; } cur%=K; } } } assert(cur==0); } mint ans=0; int cur=0; for(int i=N%k;i>=1;i--) { ans+=2*c[i]*i; if(V[i]>0) { if(cur==0)ans+=i*2,cur=V[i]; else { cur+=V[i]; if(cur>K)ans+=i*2; cur%=K; } } } mint J=N/k; //ans+=sum_{j=0..J-1}(ans0+ans1*j+ans2*j*j) ans+=ans0*J; ans+=ans1*J*(J-1)/2; ans+=ans2*J*(J-1)*(2*J-1)/6; cout<