#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;
}
