Program iepuri;
const md=666013;
type tip=array [1..3,1..3] of int64;
var a,s,aux:tip;
b1:array [1..1 shl 15] of char;
k,i,x,y,b,c,n,h,g,z,j:longint;
fi,fo:text;
procedure inmulteste(var a:tip; b:tip);
var i,j,k:longint;
begin
for i:=1 to 3 do
for j:=1 to 3 do
aux[i,j]:=0;
for i:=1 to 3 do
for j:=1 to 3 do
for k:=1 to 3 do
aux[i,j]:=(aux[i,j]+((a[i,k]*b[k,j]) mod md)) mod md;
a[1]:=aux[1]; a[2]:=aux[2]; a[3]:=aux[3];
end;
procedure pow(t:longint);
begin
while t>0 do
if t mod 2=0 then begin
inmulteste(a,a);
t:=t div 2;
end
else begin
inmulteste(s,a);
t:=t-1;
end;
end;
begin
assign(fi,'iepuri.in');
assign(fo,'iepuri.out');
settextbuf(fi,b1);
reset(fi); rewrite(fo);
readln(fi,k);
for i:=1 to k do begin
readln(fi,x,y,z,j,b,c,n);
a[1,1]:=0; a[1,2]:=1; a[1,3]:=0;
a[2,1]:=0; a[2,2]:=0; a[2,3]:=1;
a[3,1]:=c; a[3,2]:=b; a[3,3]:=j;
s[1]:=a[1]; s[2]:=a[2]; s[3]:=a[3];
pow(n-1);
writeln(fo,(((s[1,1]*x) mod md)+((s[1,2]*y) mod md)+((s[1,3]*z) mod md)) mod md);
end;
close(fo);
end.