#include<iostream> **/*(k-1)^n+(k-1)(-1)^n;数学公式*/ ** **/* n代表个气球 K代表几种颜色;*/ ** using namespace std; int main(){ long long n, k,ans=1,M,res=1; int m; long long N; cin>>m; for(int i=0; i<m; i++){ cin>> n >>k; N=k-1; int L=n%2; //cout<<n<<endl; while(n){ if( n & 1) res=N * res * 1ll % 100000007; N=N*N* 1ll % 100000007; n >>=1; } //快速幂减少时间复杂度防止超时 // (a*b)%p=(a%p * b%p) % p; 取模公式 对数据进行处理防止数据溢出; //cout<<res<<endl; //cout<<n<<endl; if(!L) ans= ((k-1 % 100000007)+ res )%100000007; if(L) ans= (res- (k-1 % 100000007))%100000007; cout<<ans<<endl; res=1; } return 0; }