#include <fstream>
using namespace std;
ifstream fin( "iepuri.in" );
ofstream fout( "iepuri.out" );
const int MOD = 666013;
int rez[3][3];
int M[3][3];
int P[3][3];
int init[1][3];
void mul( int A[3][3], int B[3][3], int n, int m, int l ) { //n x m, m x l
int i, j, k;
for ( i = 0; i < 3; ++i ) {
for ( j = 0; j < 3; ++j ) {
rez[i][j] = 0;
}
}
for ( i = 0; i < n; ++i ) {
for ( j = 0; j < l; ++j ) {
for ( k = 0; k < m; ++k ) {
rez[i][j] = (rez[i][j] + 1LL * A[i][k] * B[k][j]) % MOD;
}
}
}
}
void moveAtoB( int A[3][3], int B[3][3], int n, int m ) {
int i, j;
for ( i = 0; i < n; ++i ) {
for ( j = 0; j < m; ++j ) {
B[i][j] = A[i][j];
}
}
}
void quickExp( int n ) {
while ( n > 0 ) {
if ( n % 2 == 1 ) {
mul( P, M, 3, 3, 3 );
moveAtoB( rez, P, 3, 3 );
}
mul( M, M, 3, 3, 3 );
moveAtoB( rez, M, 3, 3 );
n /= 2;
}
}
int main() {
int t, i, j, r1, r2, r3, a, b, c, n;
fin >> t;
while ( t-- ) {
fin >> r1 >> r2 >> r3 >> a >> b >> c >> n;
init[0][0] = r1;
init[0][1] = r2;
init[0][2] = r3;
M[0][0] = 0;
M[0][1] = 0;
M[0][2] = c;
M[1][0] = 1;
M[1][1] = 0;
M[1][2] = b;
M[2][0] = 0;
M[2][1] = 1;
M[2][2] = a;
for ( i = 0; i < 3; ++i ) {
for ( j = 0; j < 3; ++j ) {
P[i][j] = 0;
}
}
P[0][0] = P[1][1] = P[2][2] = 1;
mul( M, M, 3, 3, 3 );
quickExp( n - 2 );
mul( init, P, 1, 3, 3 );
fout << rez[0][2] << "\n";
}
fin.close();
fout.close();
return 0;
}