#include <iostream>
#define int long long
using namespace std;
const int MOD = 1e9 + 7, SUB = 1e6 + 5;
int binp(int a, int n) {
if (n == 0) return 1;
int x = binp(a, n / 2);
if (n % 2 == 0) return (x * x) % MOD;
else return ((x * x) % MOD * a) % MOD;
}
int di(int a, int b) {
return (a * binp(b, MOD - 2)) % MOD;
}
int f1(int a, int n) {
//a^n + a^(n - 1) + ... + a + 1
if (a == 1) return n + 1;
return di(binp(a, n + 1) - 1, a - 1);
}
int f2(int a, int k) {
//a^n + 2 * a^(n - 1) + 3 * a^(n - 2) + 4 * a^(n - 3) + ... + n * a + (n + 1)
if (k == 0) return 1;
int n = k / 2;
if (k % 2 == 0) return (f2(a, n) + (n * f1(a, n)) % MOD + (binp(a, n + 1) * f2(a, n - 1)) % MOD) % MOD;
else return ((binp(a, n + 1) * f2(a, n)) % MOD + ((n + 1) * f1(a, n)) % MOD + f2(a, n)) % MOD;
}
signed main() {
int q;
cin >> q;
while (q--) {
int t, k, a, b, n;
cin >> t >> k >> a >> b >> n;
if (t == 1) {
int res1 = (binp(a, n - 1) * k) % MOD;
int res2 = (f1(a, n - 2) * b) % MOD;
cout << (res1 + res2) % MOD << '\n';
} else {
if (a == 1) cout << ((n * k) % MOD + (b * ((n * (n - 1)) / 2) % MOD) % MOD) % MOD << '\n';
else if (b == 0) cout << (k * f1(a, n - 1)) % MOD << '\n';
else if (n <= SUB) {
int res = 0, cur = k;
for (int i = 1; i <= n; ++i) {
res = (res + cur) % MOD;
cur = (a * cur + b) % MOD;
}
cout << res << '\n';
} else cout << ((k * f1(a, n - 1)) % MOD + (b * f2(a, n - 2)) % MOD) % MOD << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIGludCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IE1PRCA9IDFlOSArIDcsIFNVQiA9IDFlNiArIDU7CgppbnQgYmlucChpbnQgYSwgaW50IG4pIHsKCWlmIChuID09IDApIHJldHVybiAxOwoJaW50IHggPSBiaW5wKGEsIG4gLyAyKTsKCWlmIChuICUgMiA9PSAwKSByZXR1cm4gKHggKiB4KSAlIE1PRDsKCWVsc2UgcmV0dXJuICgoeCAqIHgpICUgTU9EICogYSkgJSBNT0Q7Cn0KCmludCBkaShpbnQgYSwgaW50IGIpIHsKCXJldHVybiAoYSAqIGJpbnAoYiwgTU9EIC0gMikpICUgTU9EOyAKfQoKaW50IGYxKGludCBhLCBpbnQgbikgewoJLy9hXm4gKyBhXihuIC0gMSkgKyAuLi4gKyBhICsgMQoJaWYgKGEgPT0gMSkgcmV0dXJuIG4gKyAxOwoJcmV0dXJuIGRpKGJpbnAoYSwgbiArIDEpIC0gMSwgYSAtIDEpOwp9CgppbnQgZjIoaW50IGEsIGludCBrKSB7CgkvL2FebiArIDIgKiBhXihuIC0gMSkgKyAzICogYV4obiAtIDIpICsgNCAqIGFeKG4gLSAzKSArIC4uLiArIG4gKiBhICsgKG4gKyAxKQoJaWYgKGsgPT0gMCkgcmV0dXJuIDE7CglpbnQgbiA9IGsgLyAyOwoJaWYgKGsgJSAyID09IDApIHJldHVybiAoZjIoYSwgbikgKyAobiAqIGYxKGEsIG4pKSAlIE1PRCArIChiaW5wKGEsIG4gKyAxKSAqIGYyKGEsIG4gLSAxKSkgJSBNT0QpICUgTU9EOwoJZWxzZSByZXR1cm4gKChiaW5wKGEsIG4gKyAxKSAqIGYyKGEsIG4pKSAlIE1PRCArICgobiArIDEpICogZjEoYSwgbikpICUgTU9EICsgZjIoYSwgbikpICUgTU9EOwp9CgpzaWduZWQgbWFpbigpIHsKCWludCBxOwoJY2luID4+IHE7Cgl3aGlsZSAocS0tKSB7CgkJaW50IHQsIGssIGEsIGIsIG47CgkJY2luID4+IHQgPj4gayA+PiBhID4+IGIgPj4gbjsKCQlpZiAodCA9PSAxKSB7CgkJCWludCByZXMxID0gKGJpbnAoYSwgbiAtIDEpICogaykgJSBNT0Q7CgkJCWludCByZXMyID0gKGYxKGEsIG4gLSAyKSAqIGIpICUgTU9EOwoJCQljb3V0IDw8IChyZXMxICsgcmVzMikgJSBNT0QgPDwgJ1xuJzsKCQl9IGVsc2UgewoJCQlpZiAoYSA9PSAxKSBjb3V0IDw8ICgobiAqIGspICUgTU9EICsgKGIgKiAoKG4gKiAobiAtIDEpKSAvIDIpICUgTU9EKSAlIE1PRCkgJSBNT0QgPDwgJ1xuJzsKCQkJZWxzZSBpZiAoYiA9PSAwKSBjb3V0IDw8IChrICogZjEoYSwgbiAtIDEpKSAlIE1PRCA8PCAnXG4nOwoJCQllbHNlIGlmIChuIDw9IFNVQikgewoJCQkJaW50IHJlcyA9IDAsIGN1ciA9IGs7CgkJCQlmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQkJCQlyZXMgPSAocmVzICsgY3VyKSAlIE1PRDsKCQkJCQljdXIgPSAoYSAqIGN1ciArIGIpICUgTU9EOwoJCQkJfQoJCQkJY291dCA8PCByZXMgPDwgJ1xuJzsKCQkJfSBlbHNlIGNvdXQgPDwgKChrICogZjEoYSwgbiAtIDEpKSAlIE1PRCArIChiICogZjIoYSwgbiAtIDIpKSAlIE1PRCkgJSBNT0QgPDwgJ1xuJzsKCQl9Cgl9CglyZXR1cm4gMDsKfQo=