//dp[i][j] 第i次传球到j,当传到d游戏结束,一共6个人传球(环,球一开始在第一个身上)
//秦九韶公式:例:1314= ((1*10+3)*10+1)*10+4 (a*b)%c == (a%c)*(b%c) 、(a+b)%c == (a%c)+(b%c) 。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
string dp[1005][7];
ll m(string s1,int mod){
ll sum=s1[0]-'0';
for(int i=1;i<s1.size();++i){
sum = (sum*10+s1[i]-'0')%mod;
}
return sum;
}
string add(string n1,string n2){
if(n1.size()<n2.size()){
string temp=n1;
n1=n2;
n2=temp;
}
int length1=n1.size(),length2=n2.size(),jin=0,a,b,sum;
while(length1>0){
a=n1[length1-1]-'0';
if(length2>0)
b=n2[length2-1]-'0';
else
b=0;
sum=a+b+jin;
if(sum>=10){
n1[length1-1]='0'+sum%10;
jin=1;
}else{
n1[length1-1]='0'+sum;
jin=0;
}
length1--;
length2--;
}
if(1==jin)
n1="1"+n1;
return n1;
}
int main()
{
memset(dp,0,sizeof(dp));
for(int i=0;i<=1000;++i){
for(int j=0;j<=6;++j){
dp[i][j]="0";
}
}
dp[0][1]="1";
dp[1][2]="1";
dp[1][6]="1";
for(int i=2;i<=1000;++i){
for(int j=1;j<=6;++j) {
if(j==1){
dp[i][j]=add(dp[i-1][6],dp[i-1][2]);
}
else if(j==6){
dp[i][j]=add(dp[i-1][5],dp[i-1][1]);
}else{
if(j-1==4) dp[i][j]=dp[i-1][j+1];
else if(j+1==4) dp[i][j]=dp[i-1][j-1];
else dp[i][j]=add(dp[i-1][j-1],dp[i-1][j+1]);
}
}
}
//cout<<dp[1000][1]<<endl;
//cout<<dp[2][6]<<endl;
int t;cin>>t;
while(t--){
int i;
char c;
cin>>i>>c;
int j = c-'a'+1;
int mod;cin>>mod;
cout<<m(dp[i][j],mod)<<endl;
}
}