y=i-1<=>i=y+1
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<iostream> #include<map> using namespace std; long long a,b,x1,t,mod; int T; map<long long,int> mp; long long power(long long x,long long y,long long mod) { long long ans=1; while (y) { if (y&1) ans=ans*x%mod; x=x*x%mod; y>>=1; } return ans; } int BSGS(long long y,long long z,long long mod) { if (y==0 && z==0) return 1; if (y==0 && z!=0) return -2; mp.clear(); long long temp=z,p=power(y,mod-2,mod); int k=ceil(sqrt(mod)); mp[z]=k+1; for (int i=1;i<k;i++) { temp=temp*p%mod; if (!mp[temp]) mp[temp]=i; } temp=1;p=power(y,k,mod); for (int i=0;i<k;i++,temp=temp*p%mod) { if (mp[temp]) { if (mp[temp]==k+1) return i*k; else return i*k+mp[temp]; } } return -2; } int main() { scanf("%d",&T); while (T--) { scanf("%lld%lld%lld%lld%lld",&mod,&a,&b,&x1,&t); if (x1==t) {printf("1\n");continue;} if (a==0) { if (t==b) printf("2\n"); else printf("-1\n"); continue; } if (a==1) { if (b) printf("%d\n",((t-x1+mod)%mod)*power(b,mod-2,mod)%mod+1); else { if (t==x1) printf("1\n"); else printf("-1\n"); } continue; } long long tmp=power(a-1,mod-2,mod); printf("%d\n",BSGS(a,((t+b*tmp)%mod)*power((x1+b*tmp)%mod,mod-2,mod)%mod,mod)+1); } return 0; }