#include<stdio.h>
#include<string.h>
long long mat[4][4],curent[4][4],sol[4][4];
inline void initializare(int A,int B,int C)
{
mat[1][1]=A;
mat[1][2]=B;
mat[1][3]=C;
mat[2][1]=1;
mat[2][2]=0;
mat[2][3]=0;
mat[3][1]=0;
mat[3][2]=1;
mat[3][3]=0;
}
void inmultire(long long A[][4],long long B[][4])
{
int i,j,k;
memset(sol,0,sizeof(sol));
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
sol[i][j]=(sol[i][j]+A[i][k]*B[k][j])%666013;
memcpy(curent,sol,sizeof(curent));
}
void ridputlog(int pow)
{
if(pow==1)
{
memcpy(curent,mat,sizeof(curent));
return ;
}
ridputlog(pow>>1);
if(pow&1)
{
inmultire(curent,curent);
inmultire(curent,mat);
}
else
inmultire(curent,curent);
}
int main()
{
int T,x,y,z,A,B,C,N,i;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&T);
for(i=1;i<=T;i++)
{
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&A,&B,&C,&N);
initializare(A,B,C);
ridputlog(N-2);
printf("%lld\n",((long long)curent[1][1]*z+curent[1][2]*y+curent[1][3]*x)%666013);
}
return 0;
}