#include <stdio.h>
#include <string.h>
const char IN[]="iepuri.in",OUT[]="iepuri.out";
const int mod= 666013;
typedef long long ll;
ll mat[3][3]={ {0,0,1} , {1,0,0} , {0,1,0} };
int T;
int X,Y,Z,A,B,C,N;
void mult(ll a[][3],ll b[][3])
{
int i,j,k;
static ll c[3][3];
memset(c,0,sizeof(c));
for (i=0;i<3;i++)
for (j=0;j<3;j++)
for (k=0;k<3;k++)
c[i][j]= (c[i][j]+a[i][k]*b[k][j])%mod;
memcpy(a,c,sizeof(c));
}
void pow(ll a[][3],int p)
{
int i;
static ll Sol[3][3];
memset(Sol,0,sizeof(Sol));
Sol[0][0]=1;Sol[1][1]=1;Sol[2][2]=1;
for (i=0;(1<<i)<=p;i++)
{
if ( (1<<i)&p)
mult(Sol,a);
mult(a,a);
}
memcpy(a,Sol,sizeof(Sol));
}
int main()
{
int i;
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
scanf("%d",&T);
for (i=0;i<T;i++)
{
scanf("%d%d%d%d%d%d%d",&X,&Y,&Z,&A,&B,&C,&N);// X Y Z A B C N.
mat[0][0]= 0 , mat[0][1]=0 , mat[0][2]=C;
mat[1][0]= 1 , mat[1][1]=0 , mat[1][2]=B;
mat[2][0]= 0 , mat[2][1]=1 , mat[2][2]=A;
pow(mat,N-2);
printf("%d\n", (X*mat[0][2]%mod + Y*mat[1][2]%mod + Z*mat[2][2]%mod )%mod);
}
fclose(stdin);
fclose(stdout);
return 0;
}