/* https://c...content-available-to-author-only...s.com/algebra/binary-exp.html */
#include <bits/stdc++.h>
using namespace std;
/// binary exponentiation
long long bigPow(int b, int e)
{
if (e == 0) return 1;
long long ret = bigPow(b, e / 2); /// 2 ^ 2 // b = 2 e = 5
ret = ret * ret;
if (e & 1) ret = ret * b; /// 2 ^ 5 = 2 ^ 2 * 2 ^ 2 * (2)
return ret;
}
/// O (log e)
long long bigPowMod(int b, int e, int mod)
{
if (e == 0) return 1;
long long ret = bigPowMod(b, e / 2, mod); /// 2 ^ 2 // b = 2 e = 5
ret = ((ret % mod) * (ret % mod)) % mod;
if (e & 1) ret = (ret * b) % mod; /// 2 ^ 5 = 2 ^ 2 * 2 ^ 2 * (2)
return ret % mod;
}
const int MOD = 1e9 + 7;
int main()
{
ios_base::sync_with_stdio(false), cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int a, b;
cin >> a >> b;
// if (a == 0 and b == 0) {
// cout << 1 << '\n';
// continue;
// }
cout << bigPowMod(a, b, MOD) << '\n';
}
return 0;
}
LyogaHR0cHM6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmNvbS9hbGdlYnJhL2JpbmFyeS1leHAuaHRtbCAqLwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLy8gYmluYXJ5IGV4cG9uZW50aWF0aW9uCmxvbmcgbG9uZyBiaWdQb3coaW50IGIsIGludCBlKQp7CiAgaWYgKGUgPT0gMCkgcmV0dXJuIDE7CiAgbG9uZyBsb25nIHJldCA9IGJpZ1BvdyhiLCBlIC8gMik7IC8vLyAyIF4gMiAvLyBiID0gMiBlID0gNQogIHJldCA9IHJldCAqIHJldDsKICBpZiAoZSAmIDEpIHJldCA9IHJldCAqIGI7IC8vLyAyIF4gNSA9IDIgXiAyICogMiBeIDIgKiAoMikKICByZXR1cm4gcmV0Owp9Ci8vLyBPIChsb2cgZSkKCmxvbmcgbG9uZyBiaWdQb3dNb2QoaW50IGIsIGludCBlLCBpbnQgbW9kKQp7CiAgaWYgKGUgPT0gMCkgcmV0dXJuIDE7CiAgbG9uZyBsb25nIHJldCA9IGJpZ1Bvd01vZChiLCBlIC8gMiwgbW9kKTsgLy8vIDIgXiAyIC8vIGIgPSAyIGUgPSA1CiAgcmV0ID0gKChyZXQgJSBtb2QpICogKHJldCAlIG1vZCkpICUgbW9kOwogIGlmIChlICYgMSkgcmV0ID0gKHJldCAqIGIpICUgbW9kOyAvLy8gMiBeIDUgPSAyIF4gMiAqIDIgXiAyICogKDIpCiAgcmV0dXJuIHJldCAlIG1vZDsKfQoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CgppbnQgbWFpbigpCnsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKTsKCiAgaW50IHQ7CiAgY2luID4+IHQ7CiAgd2hpbGUgKHQtLSkgewogICAgaW50IGEsIGI7CiAgICBjaW4gPj4gYSA+PiBiOwovLyAgICBpZiAoYSA9PSAwIGFuZCBiID09IDApIHsKLy8gICAgICBjb3V0IDw8IDEgPDwgJ1xuJzsKLy8gICAgICBjb250aW51ZTsKLy8gICAgfQogICAgY291dCA8PCBiaWdQb3dNb2QoYSwgYiwgTU9EKSA8PCAnXG4nOwogIH0KCiAgcmV0dXJuIDA7Cn0K