program cifre;
const
a1:array[1..50] of byte=(1,5,2,8,3,9,2,8,7,7,8,4,7,3,8,4,1,5,4,4,5,9,6,2,7,3,6,2,1,1,2,8,1,7,2,8,5,9,8,8,9,3,0,6,1,7,0,6,5,5);
a2:array[1..50] of byte=(6,2,5,1,6,2,9,3,2,2,3,7,4,0,5,1,4,0,9,9,0,6,9,5,0,6,3,7,6,6,7,1,8,4,9,5,8,4,3,3,4,0,3,9,4,0,7,1,0,0);
var i,j,t,p,s,n:longint;
l:integer;
f,g:text;
sir:string[100];
sir1:string[2];
c1,c2:char;
begin
assign(f,'cifra.in');
assign(g,'cifra.out');
reset(f);
rewrite(g);
readln(f,t);
for j:=1 to t do
begin
readln(f,sir);
l:=length(sir);
writeln(sir,' ',l);
sir1:=copy(sir,l-1,2);{ultimele 2 cifre /mod 100}
val(sir1,n,l);
s:=0;
p:=0;
for i:=1 to n do
begin
case (i mod 4) of
0: p:=(i mod 10)*(i mod 10)*(i mod 10)*(i mod 10);
1: p:=(i mod 10);
2: p:=(i mod 10)*(i mod 10);
3: p:=(i mod 10)*(i mod 10)*(i mod 10);
end;
s:=(s+p) mod 10;
end;
{ s:=0;
if n<=50 then
for i:=1 to n do
s:=(s+a1[i])mod 10
else
begin
for i:=1 to 50 do
s:=(s+a1[i]) mod 10;
for i:=51 to n do
s:=(s+a2[i-50]) mod 10;
end;}
writeln(g,s);
end;
close(f);
close(g);
end.