#include #include #include using namespace std; const int prime[]={2,3,5,7,11,13,17,19,23}; const int np=9; int state[30]; int g[300][300]; int vi[300]; int num[30]; int base[30]; short dp[19][2000000]; bool ok[29]; int n,m,ns,st; void ini() { scanf("%d%d",&n,&m); memset(g,0,sizeof(g)); memset(vi,0,sizeof(vi)); memset(num,0,sizeof(num)); ns=0; state[++ns]=0; num[ns]=1; for(int i=2;i<=n;i++) { st=0; if(ok[i]) { num[1]++; continue; } for(int j=0;j=1) { dfs(t-base[i],i); dp[x][t]=((int)dp[x][t]+dp[i][t-base[i]])%m; } } return; } int main() { int T; scanf("%d",&T); memset(ok,0,sizeof(ok)); ok[17]=1; ok[19]=1; ok[23]=1; while(T--) { ini(); memset(dp,-1,sizeof(dp)); int ans=0; for(int i=1;i<=ns;i++) { dfs(st-base[i],i); ans=((int)ans+dp[i][st-base[i]])%m; } for(int i=1;i<=ns;i++) { while(num[i]>1) { ans=((int)ans*num[i])%m; num[i]--; } } printf("%d\n",ans); } }