#include <fstream>
#define SQUARE 3
using namespace std;
struct matrix {
int mat[SQUARE][SQUARE];
};
void read(ifstream &in, int &x, int &y, int &z,
int &a, int &b, int &c, int &n) {
in >> x >> y >> z >> a >> b >> c >> n;
}
void initialize(matrix &var, int a, int b, int c) {
var.mat[0][0] = var.mat[2][0] = var.mat[0][1] = var.mat[1][1] = 0;
var.mat[1][0] = var.mat[2][1] = 1;
var.mat[0][2] = c;
var.mat[1][2] = b;
var.mat[2][2] = a;
}
matrix multiply(matrix a, matrix b) {
matrix aux;
for (int i = 0; i < SQUARE; ++i) {
for (int j = 0; j < SQUARE; ++j) {
int s = 0;
for (int k = 0; k < SQUARE; ++k) {
s = (s + (a.mat[i][k] * b.mat[k][j]) % 666013) % 666013;
}
aux.mat[i][j] = s;
}
}
return aux;
}
matrix expi(matrix a, int exp) {
if (exp == 1) {
return a;
} else if (exp % 2) {
return multiply(a, expi(a, exp - 1));
} else {
matrix aux = expi(a, exp / 2);
return multiply(aux, aux);
}
}
int dayN(matrix var, int x, int y, int z) {
int s;
s = ((x * var.mat[0][2]) % 666013 + (y * var.mat[1][2]) % 666013
+ (z * var.mat[2][2]) % 666013) % 666013;
return s;
}
int main() {
matrix var;
int t, x, y, z, a, b, c, n, s;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
in >> t;
for (int i = 0; i < t; ++i) {
read(in, x, y, z, a, b, c, n);
initialize(var, a, b, c);
var = expi(var, n - 2);
s = dayN(var, x, y, z);
out << s << '\n';
}
in.close();
out.close();
return 0;
}