def Divisors(N): N=abs(N) L,U=[],[] k=1 while k*k <=N: if N%k== 0: L.append(k) if k*k!=N: U.append(N//k) k+=1 return L+U[::-1] #================================================== T=int(input()) Mod=10**9+7 Ans=[] for _ in range(T): N,C=map(int,input().split()) # gcd(N,x) の分布を調べる. D=Divisors(N)[::-1]; M=len(D) H={} for i in range(M): d=D[i] H[d]=N//d for j in range(i): e=D[j] if e%d==0: H[d]-=H[e] # σ^k 型の計算 A=0 for g in H: m=2*g A+=H[g]*pow(C,m,Mod); A%=Mod # τ σ^k 型の計算 B=N*pow(C,N,Mod) X=(A+B)*pow(2*N,Mod-2,Mod) X%=Mod Ans.append(X) print(*Ans,sep="\n")