#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int a[2][2],b[2][2],c[2][2];
int main(){
int T,n,mod;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&mod);
if(n==1){printf("%d\n",1%mod);continue;}
if(n==2){printf("%d\n",1%mod);continue;}
if(n==3){printf("%d\n",2%mod);continue;}
n-=2;
a[0][0]=1;a[0][1]=1;a[1][0]=1;a[1][1]=0;
b[0][0]=1;b[0][1]=1;b[1][0]=1;b[1][1]=0;
while(n){
if(n&1){
c[0][0]=(a[0][0]*b[0][0]%mod+a[0][1]*b[1][0]%mod)%mod;
c[0][1]=(a[0][0]*b[0][1]%mod+a[0][1]*b[1][1]%mod)%mod;
c[1][0]=(a[1][0]*b[0][0]%mod+a[1][1]*b[1][0]%mod)%mod;
c[1][1]=(a[1][0]*b[0][1]%mod+a[1][1]*b[1][1]%mod)%mod;
memcpy(a,c,sizeof c);
}
c[0][0]=(b[0][0]*b[0][0]%mod+b[0][1]*b[1][0]%mod)%mod;
c[0][1]=(b[0][0]*b[0][1]%mod+b[0][1]*b[1][1]%mod)%mod;
c[1][0]=(b[1][0]*b[0][0]%mod+b[1][1]*b[1][0]%mod)%mod;
c[1][1]=(b[1][0]*b[0][1]%mod+b[1][1]*b[1][1]%mod)%mod;
memcpy(b,c,sizeof c);
n>>=1;
}
printf("%d\n",(a[0][0]+a[0][1])%mod);
}
return 0;
}