(a+b)%m = (a%m + b%m)%m
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int m;
char a[200];
long long mult(int n)
{
long long t=1,sum=0;
int i;
for(i=1;i<=(n+1);i++){
sum=(sum+t)%m;
t=((t%m)*(i%m))%m;
}
sum%=m;
return sum;
}
int main()
{
int t,n,i,j,k,len;
long long sum;
scanf("%d",&t);
while(t--){
memset(a,0,sizeof(a));
scanf("%s %d",a,&m);
len=strlen(a);
n=0;
if(len>7) n=m; //当n>m时,n!%m均为0
else{
k=1;
for(i=len-1;i>=0;i--){
n+=(a[i]-'0')*k;
k*=10;
}
}
sum=mult(n);
printf("%I64d\n",sum);
}
system("pause");
return 0;
}