#include long long power(long long a,long long b,long long mod){ long long res = 1; while(b!=0){ if(b%2) res = res*a%mod; a = a*a%mod; b /= 2; } return res; } void exgcd(long long a,long long b,long long& x,long long& y){ if(b==0){ x = 1; y = 0; } else{ exgcd(b,a%b,x,y); long long t = x; x = y; y = t-(a/b)*x; } } int main(){ int T; scanf("%d",&T); while(T--){ long long x,k; scanf("%lld%lld",&x,&k); long long mod = 1e9+7; long long mMod = mod-1; long long a,b; exgcd(k,mMod,a,b); a = a%mMod; if(a<0) a += mMod; //debug //printf("a = %lld\n",a); //printf("%lld\n",a*k%mMod); printf("%lld\n",power(x,a,mod)); } return 0; }