#define MD 998244353 typedef struct{ unsigned t,i; } SEdev; SEdev edevs[2026]; rep(i,1,2026,2){ edevs[i].t=~0u/i; unsigned x=i; x*=2-i*x; x*=2-i*x; x*=2-i*x; x*=2-i*x; edevs[i].i=x; } Mint d[2026][2027]; d[0][0]=1; rep(i,1,2026){ d[i][0]=d[i-1][1]; rep(j,1,i+1){ d[i][j]=d[i-1][j-1]+d[i-1][j+1]; } } ll@t; rep(t){ ll@n,@a; Mint z=0; rep(j,1,451){ if(__builtin_ctz(a)>=__builtin_ctz(j)){ ll j2=j>>__builtin_ctz(j); if((unsigned)a*edevs[j2].i<=edevs[j2].t){ z+=d[n-1][j]; //ll k=a/j; ll k=(unsigned)a*edevs[j2].i>>__builtin_ctz(j); if(k>450&&k<2026){ z+=d[n-1][k]; } } } } wt(z); }