#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;
}