#include <iostream>
#include <cstdio>
#include <cassert>
#include <fstream>
using namespace std;
#define MOD 666013
#define KMax 3
/**
* inmultirea a doua matrici
* @param a
* @param b
* @param c rezultatul in c
*/
void multiply_matrix(long long A[KMax][KMax], long long B[KMax][KMax],
long long C[KMax][KMax]) {
long long tmp[KMax][KMax] = {{0}};
for (int i = 0; i < KMax; i++) {
for (int j = 0; j < KMax; j++) {
for (int k = 0; k < KMax; k++) {
tmp[i][j] += (A[i][k] * B[k][j] % MOD);
tmp[i][j] %= MOD;
}
}
}
for (int i = 0; i < KMax; i++) {
for (int j = 0; j < KMax; j++) {
C[i][j] = tmp[i][j];
}
}
}
void power_matrix2(long long A[KMax][KMax], int n, long long tmp[KMax][KMax]) {
if(n == 1){
for (int i = 0; i < KMax; i++) {
for (int j = 0; j < KMax; j++) {
tmp[i][j] = A[i][j];
}
}
return;
}
if(n == 0){
long long I[KMax][KMax] ={
{1, 0, 0},
{0, 1, 0},
{0, 0, 1}
};
for (int i = 0; i < KMax; i++) {
for (int j = 0; j < KMax; j++) {
tmp[i][j] = I[i][j];
}
}
return;
}
long long p[KMax][KMax];
power_matrix2(A, n / 2, p);
if(n % 2 == 0){
multiply_matrix(p, p, tmp);
return;
}
multiply_matrix(p, p, tmp);
multiply_matrix(tmp, A, tmp);
}
int main() {
FILE *input = fopen("iepuri.in", "r");
ofstream output("iepuri.out");
if (input == NULL ) {
fprintf(stderr, "Error open file!\n");
exit(EXIT_FAILURE);
}
int number;
assert(fscanf(input, "%d", &number) == 1);
for (int i = 0; i < number; i++) {
int X, Y, Z, A, B, C, N;
int a = fscanf(input, "%d %d %d %d %d %d %d", &X, &Y, &Z, &A, &B, &C,
&N);
assert(a == 7);
/** cazurile de baza */
if (N == 0) {
output << X << endl;
continue;
}
if (N == 1) {
output << Y << endl;
continue;
}
if (N == 2) {
output << Z << endl;
continue;
}
long long trib[KMax][KMax] = {
{A, B, C},
{1, 0, 0},
{0, 1, 0}
};
long long rez[KMax][KMax];
power_matrix2(trib, N - 2 , rez);
long long Tn = (rez[0][0] * Z) % MOD + (rez[0][1] * Y) % MOD +
(rez[0][2] * X) % MOD;
int fn = Tn % MOD;
output << fn << endl;
}
fclose(input);
return 0;
}