#include <fstream>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
int c[10][4]={{0,0,0,0},{1,1,1,1},{6,2,4,8},{1,3,9,7},{6,4,6,4},{5,5,5,5},{6,6,6,6},{1,7,9,3},{6,8,4,2},{1,9,1,9}};
// c[i][j] = ultima cifra a lui i la puterea 4*k+j
// (abc^abc)%10 = (abc^bc)%10 = (bc^bc)%10
// adica ultima cifra a expresiei x^x depinde doar de ultimele 2 cifre ale lui x
// Se poate deduce ca
// ultima cifra(1^1+2^2+...+100^100) = 0
// eventual scriind un program care calculeaza aceasta cifra
// iar pentru x>100 obtinem
// sum(x) = ultima cifra(1^1+2^2+...+100^100+101^101+...+x^x) =
// = ultima cifra(1^1+2^2+...+100^100) + ultima cifra(101^101) + ultima cifra(102^102) + ... +ultima cifra(x^x) =
// = 0 + ultima cifra(1^1)+ultima cifra(2^2) + ...
// = sum(x%100),
// adica doar ultimele 2 cifre ale lui x conteaza
// asadar calculam sum(x) pentru x pana la 100 si retinem valorile intr-un vector
int main()
{
int s[101],i,n,k,m;
char nr[105];
s[0]=0; s[1]=1;
for (i=2;i<=99;i++)
s[i]=(s[i-1]+c[i%10][i%4])%10;
f>>n;
for (i=1;i<=n;i++)
{
f>>nr;
m=strlen(nr);
k=nr[m-1]-'0';
if (m>1)
k=k+(nr[m-2]-'0')*10;
g<<s[k%100]<<"\n";
}
f.close();
g.close();
return 0;
}