#include<stdio.h>
int main()
{
	int t,p;
	long long n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%lld",&p,&n);
		long long  pre1=1,pre2=1,now;
		if(n<=2){
			printf("1\n");
			continue;
		}
		int xhj;//循环节长度 
		for(int i=3;i<=p*p+2;i++){//寻找循环节 
			now=(pre1+pre2)%p;   //计算斐波那契数列 
			if(now==1&&pre2==1){    //如果有两项是1 1,则找到循环节 
				xhj=i-2;
				break;
			}
			pre1=pre2;
			pre2=now;
		}
		n=(n-1)%xhj+1;//除以循环节 
		pre1=pre2=1;
		for(int i=3;i<=n;i++){  //找到答案 
			now=(pre1+pre2)%p;
			pre1=pre2;
			pre2=now;
		}
		printf("%lld\n",now);
		
	} 
}