#include
#define ll long long
#define pii_ pair
#define mp_ make_pair
#define pb push_back
#define fi first
#define se second
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define show1(a) cout<<#a<<" = "<>=1;}return s; }
int n,m,lim,l,r[maxn],cnt[maxn];
ll A[maxn],B[maxn],fac[maxn],inv[maxn];
int c[5];
void NTT(ll a[],int type)
{
rep(i,1,lim-1) if(i>_;_;_--){
cin>>n>>m;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
rep(i,0,n-1) cin>>A[i];
lim=1,l=0;
while(lim<=2*n) lim<<=1,l++;
rep(i,0,lim-1) r[i] = (r[i>>1]>>1) | ((i&1)<<(l-1));
cnt[1]=cnt[2]=cnt[3]=0;
while(m--) {int x;cin>>x;cnt[x]++;}
rep(i,1,3)if(cnt[i]){
memset(B,0,sizeof(B));
for(int j=0;j*i
#include
#define ll long long
#define pii_ pair
#define mp_ make_pair
#define pb push_back
#define fi first
#define se second
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define show1(a) cout<<#a<<" = "<>1;
if(f1[i]>n) break;
f2[i] = (3*i*i+i)>>1;
if(f2[i]>n) break;
}
P[0] = 1;
rep(i,1,n){
for(int j=1;;j++){
if(f1[j]<=i) P[i] += (j&1)?P[i-f1[j]] : -P[i-f1[j]];
else break;
if(f2[j]<=i) P[i] += (j&1)?P[i-f2[j]] : -P[i-f2[j]];
else break;
}
P[i] = (P[i]%M+M)%M;
}
}
int main()
{
fastio();
init();
int _,n;
for(cin>>_;_;_--){
cin>>n;cout<
#include
#define ll long long
#define pii_ pair
#define mp_ make_pair
#define pb push_back
#define fi first
#define se second
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define show1(a) cout<<#a<<" = "<>1;
if(f1[i]>n) break;
f2[i] = (3*i*i+i)>>1;
if(f2[i]>n) break;
}
P[0] = 1;
rep(i,1,n){
for(int j=1;;j++){
if(f1[j]<=i) P[i] += (j&1)?P[i-f1[j]] : -P[i-f1[j]];
else break;
if(f2[j]<=i) P[i] += (j&1)?P[i-f2[j]] : -P[i-f2[j]];
else break;
}
P[i] = (P[i]%M+M)%M;
}
}
ll solve(int n,int k)
{
ll ans = P[n];
for(int i=1;;i++){
ll a = (ll)k*(3*i*i-i)>>1;
if(a>n) break;
ll t = P[n-a];
ll b = (ll)k*(3*i*i+i)>>1;
if(b<=n) t = (t+P[n-b])%M;
if(i&1) ans = (ans-t+M)%M;
else ans = (ans+t)%M;
}
return ans;
}
int main()
{
fastio();
init();
int _,n,k;
for(cin>>_;_;_--){
cin>>n>>k;cout<