/* 不定方程 x1+...+xy=c 的正整数解有C(y+c-1,y-1)个 质因子分解后每种因子都独立算贡献,再相乘 最后因为可以随意加偶数个-1,所以再乘2^y-1 */ #include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 #define N 2000006 ll F[N],invf[N],inv[N],p2[N]; int vis[N],prime[N],m; void init(){ for(int i=2;i<N;i++){ if(!vis[i]) prime[++m]=i; for(int j=1;j<=m;j++){ if(prime[j]*i>=N)break; vis[prime[j]*i]=1; if(i%prime[j])break; } } } int mm,p[500],c[500]; void divide(int x){ memset(c,0,sizeof c); mm=0; for(int i=1;prime[i]*prime[i]<=m;i++) if(x%prime[i]==0){ p[++mm]=prime[i]; while(x%prime[i]==0) x/=prime[i],c[mm]++; } if(x>1){ p[++mm]=x; c[mm]=1; } } inline ll C(ll a,ll b){ if(a<b)return 0; return F[a]*invf[b]%mod*invf[a-b]%mod; } int x,y,q; int main(){ init(); F[0]=1;invf[0]=1;inv[1]=1;p2[0]=1; for(int i=2;i<=2000000;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod; for(int i=1;i<=2000000;i++)F[i]=F[i-1]*i%mod; for(int i=1;i<=2000000;i++)invf[i]=invf[i-1]*inv[i]%mod; for(int i=1;i<=2000000;i++)p2[i]=p2[i-1]*2%mod; cin>>q; while(q--){ cin>>x>>y; divide(x); ll res=1; for(int i=1;i<=mm;i++){ //因子p[i]的贡献 res=res*C(y+c[i]-1,y-1)%mod; } res=res*p2[y-1]%mod; cout<<res<<' '; } }