#include<bits/stdc++.h>#define int long longusingnamespacestd;constintP=998244353;inti2=499122177,i6=166374059;structdata{data(){f=g=h=0;}intf,g,h;};// 三个函数打包datacalc(intn,inta,intb,intc){intac=a/c,bc=b/c,m=(a*n+b)/c,n1=n+1,n21=n*2+1;datad;if(a==0){// 迭代到最底层d.f=bc*n1%P;d.g=bc*n%P*n1%P*i2%P;d.h=bc*bc%P*n1%P;returnd;}if(a>=c||b>=c){// 取模d.f=n*n1%P*i2%P*ac%P+bc*n1%P;d.g=ac*n%P*n1%P*n21%P*i6%P+bc*n%P*n1%P*i2%P;d.h=ac*ac%P*n%P*n1%P*n21%P*i6%P+bc*bc%P*n1%P+ac*bc%P*n%P*n1%P;d.f%=P,d.g%=P,d.h%=P;datae=calc(n,a%c,b%c,c);// 迭代d.h+=e.h+2*bc%P*e.f%P+2*ac%P*e.g%P;d.g+=e.g,d.f+=e.f;d.f%=P,d.g%=P,d.h%=P;returnd;}datae=calc(m-1,c,c-b-1,a);d.f=n*m%P-e.f,d.f=(d.f%P+P)%P;d.g=m*n%P*n1%P-e.h-e.f,d.g=(d.g*i2%P+P)%P;d.h=n*m%P*(m+1)%P-2*e.g-2*e.f-d.f;d.h=(d.h%P+P)%P;returnd;}intT,n,a,b,c;signedmain(){scanf("%lld",&T);while(T--){scanf("%lld%lld%lld%lld",&n,&a,&b,&c);dataans=calc(n,a,b,c);printf("%lld %lld %lld\n",ans.f,ans.h,ans.g);}return0;}