#include <stdio.h>
using namespace std;
FILE* fin;
FILE* fout;
int T, x, y, z, a, b, c;
unsigned long long n;
void multiply_matrix(unsigned long long A[3][3], unsigned long long B[3][3])
{
unsigned long long C[3][3];
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
unsigned long long sum = 0;
for (int k = 0; k < 3; ++k)
{
sum = sum + A[i][k] * B[k][j];
}
C[i][j] = sum;
}
}
for(int i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
A[i][j] = C[i][j] % 666013;
}
void raiseTo(unsigned long long A[3][3], unsigned long long p)
{
unsigned long long i;
for(i = 2; i <= p; i *= 2)
multiply_matrix(A, A);
i /= 2;
if(i < p)
{
unsigned long long B[3][3] = {{a, b, c}, {1, 0, 0}, {0, 1, 0}};
raiseTo(B, p - i);
multiply_matrix(A, B);
}
}
int main()
{
fin = fopen("iepuri.in", "r");
fout = fopen("iepuri.out", "w");
fscanf(fin, "%d", &T);
for(int k = 0; k < T; ++k)
{
fscanf(fin, "%d %d %d %d %d %d %llu", &x, &y, &z, &a, &b, &c, &n);
unsigned long long A[3][3] = {{a, b, c}, {1, 0, 0}, {0, 1, 0}};
raiseTo(A, n - 2);
fprintf(fout, "%llu\n", (A[0][0] * z + A[0][1] * y + A[0][2] * x) % 666013);
}
return 0;
}