#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
inline int power(int a, int b) {
a %= M;
int x = 1;
while (b) {
if (b & 1) x = (x*a)%M;
a = (a*a)%M;
b >>= 1;
}
return x;
}
//_ ***************************** START Below *******************************
int mod_div(int a, int b){
return (a * power(b, M-2))%M;
}
int mod_sub(int a, int b){
return (a - b + M)%M;
}
vector<vector<int>> a;
void consistency(int n){
int count = 1;
int sum = 1;
int product = 1;
int y = 1;
//* Count
for(int i=0; i<n; i++){
int p = a[i][0];
int e = a[i][1];
count = (count * (e+1))%M;
//* This will be future expo, hence modulo (M-1) or Rather 2(M-1)
y = (y * (e+1)) % (2*(M-1));
}
//* Sum
for(int i=0; i<n; i++){
int p = a[i][0];
int e = a[i][1];
int nmr = mod_sub(power(p, e+1 ) , 1 );
int dnr = mod_sub(p, 1);
int val = mod_div(nmr, dnr);
sum = (sum * val)%M;
}
//* product
for(int i=0; i<n; i++){
int p = a[i][0];
int e = a[i][1];
//* Can't Use modular inverse : (e% M-1) * (y % M-1) * (2^-1) % M-1
//* cz M-1 is not Prime no. so Fermats theorem not applicable,
//* hence 1st compute then apply Mod
int exponent = ((e*y)/2)%(M-1);
int val = power(p, exponent);
product = (product * val)%M;
}
cout << count << " " << sum << " " << product << endl;
}
void solve() {
int n;
cin>>n;
a.resize(n);
for(int i=0; i<n; i++){
int x, y;
cin >> x >> y;
a[i] = {x, y};
}
consistency(n);
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQogCiAKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKIAogCmlubGluZSBpbnQgcG93ZXIoaW50IGEsIGludCBiKSB7CiAgICBhICU9IE07CiAgICBpbnQgeCA9IDE7CiAgICB3aGlsZSAoYikgewogICAgICAgIGlmIChiICYgMSkgeCA9ICh4KmEpJU07CiAgICAgICAgYSA9IChhKmEpJU07CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CiAKIAogCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIAogCmludCBtb2RfZGl2KGludCBhLCBpbnQgYil7CiAgcmV0dXJuIChhICogcG93ZXIoYiwgTS0yKSklTTsKfQogCiAKIAppbnQgbW9kX3N1YihpbnQgYSwgaW50IGIpewogIHJldHVybiAoYSAtIGIgKyBNKSVNOwp9CiAKdmVjdG9yPHZlY3RvcjxpbnQ+PiBhOwp2b2lkIGNvbnNpc3RlbmN5KGludCBuKXsKIAogICAgaW50IGNvdW50ID0gMTsKICAgIGludCBzdW0gPSAxOwogICAgaW50IHByb2R1Y3QgPSAxOwogICAgaW50IHkgPSAxOwogICAgCiAgICAvLyogQ291bnQKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CiAgICAgICAgaW50IHAgPSBhW2ldWzBdOwogICAgICAgIGludCBlID0gYVtpXVsxXTsKICAgICAgICBjb3VudCA9IChjb3VudCAqIChlKzEpKSVNOwogICAgICAgIAogICAgICAgIC8vKiBUaGlzIHdpbGwgYmUgZnV0dXJlIGV4cG8sIGhlbmNlIG1vZHVsbyAoTS0xKSBvciBSYXRoZXIgMihNLTEpCiAgICAgICAgeSA9ICh5ICogKGUrMSkpICUgKDIqKE0tMSkpOwogICAgfQogICAgCiAgICAvLyogU3VtIAogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKICAgICAgICBpbnQgcCA9IGFbaV1bMF07CiAgICAgICAgaW50IGUgPSBhW2ldWzFdOwogICAgICAgIGludCBubXIgPSBtb2Rfc3ViKHBvd2VyKHAsIGUrMSApICwgMSApOwogICAgICAgIGludCBkbnIgPSBtb2Rfc3ViKHAsIDEpOwogICAgICAgIAogICAgICAgIGludCB2YWwgPSBtb2RfZGl2KG5tciwgZG5yKTsKICAgICAgICAKICAgICAgICBzdW0gPSAoc3VtICogdmFsKSVNOwogICAKICAgIH0KICAgIAogICAgLy8qIHByb2R1Y3QgCiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspewogICAgICAgIGludCBwID0gYVtpXVswXTsKICAgICAgICBpbnQgZSA9IGFbaV1bMV07CiAgICAgICAgCiAgICAgICAgLy8qIENhbid0IFVzZSBtb2R1bGFyIGludmVyc2UgOiAgKGUlIE0tMSkgKiAoeSAlIE0tMSkgKiAoMl4tMSkgJSBNLTEgCiAgICAgICAgLy8qIGN6IE0tMSBpcyBub3QgUHJpbWUgbm8uIHNvIEZlcm1hdHMgdGhlb3JlbSBub3QgYXBwbGljYWJsZSwgCiAgICAgICAgLy8qIGhlbmNlIDFzdCBjb21wdXRlIHRoZW4gYXBwbHkgTW9kCiAgICAgICAgaW50IGV4cG9uZW50ID0gKChlKnkpLzIpJShNLTEpOwogICAgICAgIGludCB2YWwgPSBwb3dlcihwLCBleHBvbmVudCk7CiAKICAgICAgICBwcm9kdWN0ID0gKHByb2R1Y3QgKiB2YWwpJU07CiAKICAgIH0KIAogICAgY291dCA8PCBjb3VudCA8PCAiICIgPDwgc3VtIDw8ICIgIiA8PCBwcm9kdWN0IDw8IGVuZGw7CiAKfQogCnZvaWQgc29sdmUoKSB7CiAgICAKICAgIAogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICBhLnJlc2l6ZShuKTsKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBhW2ldID0ge3gsIHl9OwogICAgfQogICAgY29uc2lzdGVuY3kobik7CiAKIAp9CiAKIAogCiAKIAppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKIAogCiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogCiAgICByZXR1cm4gMDsKfQ==