#include <stdio.h>
#define MOD 666013
struct matrice
{
int F[3][3];
};
matrice U, D, R;
int C, X, Y, Z, A, B, N, T;
matrice prod(struct matrice M, struct matrice P, int I, int J, int K)
{
int i, j, k;
struct matrice R;
for (i = 0; i < I; ++i)
for (j = 0; j < J; R.F[i][j] %= MOD, ++j)
for (k = R.F[i][j] = 0; k < K; ++k)
R.F[i][j] += (M.F[i][k] * P.F[k][j]) % MOD;
return R;
}
struct matrice calc(int N)
{
struct matrice R;
int m;
if (N == 1)
{
U.F[0][0] = 0;
U.F[0][1] = 0;
U.F[0][2] = C % MOD;
U.F[1][0] = 1;
U.F[1][1] = 0;
U.F[1][2] = B % MOD;
U.F[2][0] = 0;
U.F[2][1] = 1 % MOD;
U.F[2][2] = A;
return U;
}
m = N>>1;
R = calc(m);
R = prod(R, R, 3, 3, 3);
if (N%2)
R = prod(R, U, 3, 3, 3);
return R;
}
void solve()
{
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d", &T);
while (T--)
{
scanf("%d%d%d%d%d%d%d", &X, &Y, &Z, &A, &B, &C, &N);
R = calc(N);
D.F[0][0] = X % MOD;
D.F[0][1] = Y % MOD;
D.F[0][2] = Z % MOD;
R = prod(D, R, 1, 3, 3);
printf("%d\n", R.F[0][0] % MOD);
}
}
int main()
{
solve();
return 0;
}