#include <cstdio>
#include <string>
int a[3][3]={{0,0,0},{0,0,0},{0,0,0}};
inline void matrmult(int A[3][3], int B[3][3]){
int i, j, k;
memset(a, 0, sizeof(a));
for(i=0; i<3; i++)
for(j=0; j<3; j++)
for(k=0; k<3; k++)
a[i][j]=(a[i][j]+1LL*A[i][k]*B[k][j])%666013;
memcpy(A, a, sizeof(a));
}
inline int lgmult(int X, int Y, int Z, int A, int B, int C, int N){
int K[3][3], P[3][3];
int i, v=0;
K[0][2]=C; K[1][2]=B; K[2][2]=A; K[0][1]=K[2][1]=1;
for(i=0; (1<<i) <= N; i++){
if(N&(1<<i)){
if(v)
matrmult(P, K);
else {
memcpy(P, K, sizeof(K));
v=1;
}
}
matrmult(K, K);
}
return (X*1LL*P[0][2]+1LL*Y*P[1][2]+1LL*Z*P[2][2])%666013;
}
int main(){
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
int T, X, Y, Z, A, B, C, N, i;
scanf("%d", &T);
for(i=0; i<T; i++){
scanf("%d%d%d%d%d%d%d", &X, &Y, &Z, &A, &B, &C, &N);
printf("%d\n", lgmult(X, Y, Z, A, B, C, N-2));
}
return 0;
}