var a:array[0..9,0..3] of byte;
s:string;
f,g:text;
procedure init;
var i:byte;
begin
for i:=0 to 3 do begin a[0,i]:=0; a[1,i]:=1; end;
a[2,0]:=6; a[2,1]:=2; a[2,2]:=4; a[2,3]:=8;
a[3,0]:=1; a[3,1]:=3; a[3,2]:=9; a[3,3]:=7;
a[4,0]:=6; a[4,1]:=4; a[4,2]:=6; a[4,3]:=4;
for i:=0 to 3 do begin a[5,i]:=5; a[6,i]:=6; end;
a[7,0]:=1; a[7,1]:=7; a[7,2]:=9; a[7,3]:=3;
a[8,0]:=6; a[8,1]:=8; a[8,2]:=4; a[8,3]:=2;
a[9,0]:=1; a[9,1]:=9; a[9,2]:=1; a[9,3]:=9;
end;
function ucif(k:integer):integer;
var s,i:integer;
begin
s:=0;
for i:=1 to k do
begin
inc(s,a[i mod 10,i mod 4]);
{ if s>10 then s:=s mod 10;}
end;
ucif:=s mod 10;
end;
procedure rezolva;
var p,i,j,nr,c,n,t:integer;
s1:string;
begin
assign(f,'cifra.in');
reset(f);
assign(g,'cifra.out');
rewrite(g);
readln(f,t);
for i:=1 to t do
begin
readln(f,s);
p:=length(s)-1;
if p<1 then p:=1;
s1:=copy(s,p,2);
val(s1,n,c);
writeln(g,ucif(n));
end;
close(f);
close(g);
end;
begin
init;
rezolva;
end.