#include<cstdlib>
#include<string>
long long a1[4][4],a2[4][4],a3[4][4];
int t, x, y, z, a, b, c, n, i, j;
void mlt(long long a[4][4], long long b[4][4]);
void pw(int x);
int main(){
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
for(scanf("%d\n",&t);t;t--){
scanf("%d %d %d %d %d %d %d\n", &x, &y, &z, &a, &b, &c, &n);
a1[1][1] = 0, a1[1][2] = 0, a1[1][3] = c;
a1[2][1] = 1, a1[2][2] = 0, a1[2][3] = b;
a1[3][1] = 0, a1[3][2] = 1, a1[3][3] = a;
a3[1][1] = 1, a3[1][2] = 0, a3[1][3] = 0;
a3[2][1] = 0, a3[2][2] = 1, a3[2][3] = 0;
a3[3][1] = 0, a3[3][2] = 0, a3[3][3] = 1;
for (i = 1; i <= 3; i ++) {
for (j = 1; j <= 3; j ++) {
a2[i][j] = a1[i][j];
}
}
pw(n - 2);
printf("%lld\n", (((long long)x*a3[1][3])%666013+((long long)y*a3[2][3]%666013)+((long long)z*a3[3][3])%666013)%666013);
}
return 0;
}
void mlt(long long a[4][4], long long b[4][4]){
int i,j,k,c[4][4];
for (i = 1; i <= 3; i ++) {
for (j = 1; j <= 3; j ++) c[i][j] = 0;
for (j = 1; j <= 3; j ++) {
for (k = 1; k <= 3; k ++) {
c[i][k] += ((long long) (a[i][j] * b[j][k])) % 666013;
}
}
}
for (i = 1; i <= 3; i ++) {
for (j = 1; j <= 3; j ++)
a[i][j] = c[i][j];
}
}
void pw(int x){
for (; x; x >>= 1) {
if (x & 1) mlt(a3, a2);
mlt(a2, a2);
}
}