#include<cstdio>
#include<cstring>
#define INPUT "iepuri.in"
#define OUTPUT "iepuri.out"
#define CL(x) memset(x, 0, sizeof(x));
#define VMAX 4
#define MODULO 666013
#define NMAX 100
#define LL long long
int T, X, Y, Z, A, B, C, cont, Vec[ NMAX ];
LL N, Sum, P[ VMAX ][ VMAX ], Res[ VMAX ][ VMAX ], Mat[ VMAX ][ VMAX ], Init[ VMAX ];
void ReadNew()
{
scanf("%d %d %d %d %d %d", &X, &Y, &Z, &A, &B, &C);
scanf("%lld", &N);
}
void SetExp()
{
for(cont = -1; N ;)
{
Vec[ ++cont ] = (N % 2 == 0) ? 0 : 1;
N = (N % 2 == 0) ? (N/2) : (N - 1);
}
}
void Multiply(int Code)
{
int i, j, k;
if(Code)
{
for(i = 1; i < VMAX; ++i)
{
for(j = 1; j < VMAX; ++j)
{
P[ i ][ j ] = 0;
for(k = 1; k < VMAX; ++k)
P[ i ][ j ] += (Res[ i ][ k ] * Mat[ k ][ j ]) % MODULO, P[ i ][ j ] %= MODULO;
}
}
memcpy(Res, P, sizeof(P));
}
else
{
for(i = 1; i < VMAX; ++i)
{
for(j = 1; j < VMAX; ++j)
{
P[ i ][ j ] = 0;
for(k = 1; k < VMAX; ++k)
P[ i ][ j ] += (Res[ i ][ k ] * Res[ k ][ j ]) % MODULO, P[ i ][ j ] %= MODULO;
}
}
memcpy(Res, P, sizeof(P));
}
}
void InitMat()
{
Mat[ 1 ][ 1 ] = 0, Mat[ 1 ][ 2 ] = 1, Mat[ 1 ][ 3 ] = 0;
Mat[ 2 ][ 1 ] = 0, Mat[ 2 ][ 2 ] = 0, Mat[ 2 ][ 3 ] = 1;
Mat[ 3 ][ 1 ] = C, Mat[ 3 ][ 2 ] = B, Mat[ 3 ][ 3 ] = A;
Res[ 1 ][ 1 ] = 1, Res[ 1 ][ 2 ] = 0, Res[ 1 ][ 3 ] = 0;
Res[ 2 ][ 1 ] = 0, Res[ 2 ][ 2 ] = 1, Res[ 2 ][ 3 ] = 0;
Res[ 3 ][ 1 ] = 0, Res[ 3 ][ 2 ] = 0, Res[ 3 ][ 3 ] = 1;
Init[ 1 ] = X, Init[ 2 ] = Y, Init[ 3 ] = Z;
}
void SolveFunction()
{
int i;
InitMat();
while(cont >= 0)
if(Vec[ cont-- ])
Multiply(1);
else Multiply(0);
Sum = 0;
for(i = 1; i < VMAX; ++i)
Sum += (Res[ 1 ][ i ] * Init[ i ]) % MODULO, Sum %= MODULO;
printf("%lld\n", Sum);
}
int main()
{
freopen(INPUT, "r", stdin); freopen(OUTPUT, "w", stdout);
scanf("%d", &T);
while(T--)
{
CL(Vec); CL(Mat); CL(Res);
ReadNew();
SetExp();
SolveFunction();
}
fclose(stdin); fclose(stdout);
return 0;
}