#include<stdio.h>
#include<string.h>
#define CL(x) memset(x,0,sizeof(x));
#define VMAX 5
#define div 666013
#define NMAX 105
int X,Y,Z,A,B,C,cont,Vec[NMAX];
long long N,Sum,P[VMAX][VMAX],sol[VMAX][VMAX],Mat[VMAX][VMAX],Init[VMAX];
void citire(){
scanf("%d %d %d %d %d %d", &X,&Y,&Z,&A,&B,&C);
scanf("%lld",&N);
}
void se(){
for(cont=-1;N;){
Vec[++cont]=(N%2==0)?0:1;
N=(N%2==0)?(N/2):(N-1);
}
}
void M(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]+=(sol[i][k]*Mat[k][j])%div,P[i][j]%=div;
}
}
memcpy(sol,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]+=(sol[i][k]*sol[k][j])%div,P[i][j]%=div;
}
}
memcpy(sol,P,sizeof(P));
}
}
void im(){
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;
sol[1][1]=1,sol[1][2]=0,sol[1][3]=0;
sol[2][1]=0,sol[2][2]=1,sol[2][3]=0;
sol[3][1]=0,sol[3][2]=0,sol[3][3]=1;
Init[1]=X,Init[2]=Y,Init[3]=Z;
}
void sf(){
int i;
im();
while(cont>=0)
if(Vec[cont--])
M(1);
else
M(0);
Sum=0;
for(i=1;i<VMAX;++i)
Sum+=(sol[1][i]*Init[i])%div,Sum%=div;
printf("%lld\n",Sum);
}
int main(){
int t;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
while(t--){
CL(Vec);
CL(Mat);
CL(sol);
citire();
se();
sf();
}
fclose(stdin);
fclose(stdout);
return 0;
}