code
void solve(){
ll n,k;cin>>n>>k;
if(n%2==0){
mint sum = 0;
mint equal = 0;
for(int i=2; i<=n; i+=2){
equal += nCr(n,i);
}
sum += equal.pow(k);
mint zero_column = 0;
for(int i=2; i<=n; i+=2){
zero_column += nCr(n,i);
}
mint two=2;
mint free = two.pow(n);
mint bigger_sum=0;
rep(i,k){
mint a = zero_column.pow(i);
a *= free.pow(k-i-1);
bigger_sum += a;
}
sum += bigger_sum;
p(sum.x);
}
else{
mint a = 1;
for(int i=1; i<=n; i+=2){
a += nCr(n, i);
}
mint ans = a.pow(k);
p(ans.x);
}
}
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
ll N;
cin>>N;
prepare_nCr();
while(N--)solve();
return 0;
}
other's tweet (C)