#include <bits/stdc++.h>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
using ll = long long;
const int mod = 666013;
int t, n, a, b, c, x, y, z;
class Matrix {
private:
int m[3][3];
public:
Matrix(int val) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
m[i][j] = val;
}
}
}
Matrix(int a, int b, int c, int d, int e, int f, int g, int h, int i) {
m[0][0] = a;
m[0][1] = b;
m[0][2] = c;
m[1][0] = d;
m[1][1] = e;
m[1][2] = f;
m[2][0] = g;
m[2][1] = h;
m[2][2] = i;
}
Matrix operator* (const Matrix& snd) {
Matrix ans(0);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
ans.m[i][j] = (ll)(ans.m[i][j] + ((ll)m[i][k] * (ll)(snd.m[k][j])) % mod) % mod;
}
}
}
return ans;
}
int getResult() {
return m[0][2];
}
};
int main() {
in >> t;
for (int tt = 1; tt <= t; tt++) {
in >> x >> y >> z >> a >> b >> c >> n;
n -= 2;
Matrix ans(1, 0, 0, 0, 1, 0, 0, 0, 1);
Matrix m(0, 0, c, 1, 0, b, 0, 1, a);
while (n > 0) {
if (n % 2 > 0) {
ans = ans * m;
}
m = m * m;
n /= 2;
}
Matrix t(x, y, z, 0, 0, 0, 0, 0, 0);
ans = t * ans;
out << ans.getResult() << "\n";
}
return 0;
}