//Ilie Dumitru
#include<cstdio>
#define MOD 666013
#define mult(i, j, k) for(x=0;x<3;++x)for(y=0;y<3;++y){k[x][y]=0;for(z=0;z<3;++z)k[x][y]=(k[x][y]+i[x][z]*j[z][y])%MOD;}
#define assign(i, j) for(x=0;x<3;++x)for(y=0;y<3;++y)i[x][y]=j[x][y];
typedef long long ll;
ll m0[3][3]={{0, 1, 0}, {0, 0, 1}, {0, 0, 0}}, m[3][3], aux[3][3], aux0[3][3];
int x, y, z;
void fastExp(int N)
{
if(N)
{
fastExp(N>>1);
mult(m, m, aux)
if(N&1)
{
mult(aux, m0, aux0)
assign(m, aux0)
}
else
{
assign(m, aux);
}
}
printf("%d\n", N);
for(x=0;x<3;++x)
{
for(y=0;y<3;++y)
printf("%I64d ", m[x][y]);
printf("\n");
}
}
int main()
{
FILE *f=fopen("iepuri.in", "r"), *g=fopen("iepuri.out", "w");
int A, B, C, X, Y, Z, N, _, i, j;
fscanf(f, "%d", &_);
while(_--)
{
fscanf(f, "%d%d%d%d%d%d%d", &X, &Y, &Z, &A, &B, &C, &N);
for(i=0;i<3;++i)
for(j=0;j<3;++j)
m[i][j]=(i==j);
m0[2][0]=C;
m0[2][1]=B;
m0[2][2]=A;
fastExp(N-2);
fprintf(g, "%I64d\n", (m[2][0]*X+m[2][1]*Y+m[2][2]*Z)%MOD);
}
fclose(f);
fclose(g);
return 0;
}