#define MD 998244353 int p[7d5],q[1d7]{},r[1d7],s[1d7]; ll np=Prime(1d7,p); rep(i,np){ q[p[i]]=1; } int a=0,b=0; rep(i,1d7){ r[i]=a+=q[i]; s[i]=b; b+=q[i]*q[i^2]; if(i>(i^2)){ s[i]=b; } } ll@t; rep(t){ ll@n,@m; if(n==1){ wt(r[m]); }else{ --n; n<<=2; ll a=1,b=0,c=0,d=1; rep(30){ ll e=a*a+b*c; ll f=b*(a+d); ll g=c*(a+d); ll h=d*d+b*c; if((int)n<0){ a=f%MD*s[m]; b=e+f; c=h%MD*s[m]; d=g+h; }else{ a=e; b=f; c=g; d=h; } a%=MD; b%=MD; c%=MD; d%=MD; n<<=1; } wt((a+c+s[m]*(b+d))%MD); } }