R=range N,A,K=map(int,input().split()) L=2*K r=N%L+1 q=N//L t=0 a=sum((A*L*(2*q-1)*332748118+A*k//K*K+A*k)*(q-1)+A*k//K*k for k in R(r,r+L))*2*q def U(X): global t,a b=t<1and A*k%K>0;t+=A*k%K; if t>=K:t-=K;b|=t>0 a+=b*X for k in R(r+L-1,r-1,-1):U((K*(q-1)+k)*2*q) t=0 for k in R(r-1,-1,-1):U(2*k) for k in R(1,r):a+=A*k//K*2*k print(a%998244353)