#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
typedef unsigned int uint;
#define RET(c,r) case c: return r
int lastDigitPow(int d,int p){
switch(d){
RET(0,0);
RET(1,1);
case 2:
switch(p%4){
RET(0,6);RET(1,2);
RET(2,4);RET(3,8);
}
case 3:
switch(p%4){
RET(0,1);RET(1,3);
RET(2,9);RET(3,7);
}
case 4:
switch(p%2){
RET(0,6);RET(1,4);
}
RET(5,5);
RET(6,6);
case 7:
switch(p%4){
RET(0,1);RET(1,7);
RET(2,9);RET(3,3);
}
case 8:
switch(p%4){
RET(0,6);RET(1,8);
RET(2,4);RET(3,2);
}
case 9:
switch(p%2){
RET(0,1);RET(1,9);
}
}
}
int _StrToNrDiv100(char*n){
int len=strlen(n);
switch(len){
case 1:
case 2:
return atoi(n);
default:
return atoi(n+len-2);
}
}
int main(){
FILE*fi,*fo;
int t,i,val;
char n[121];
uint v[100];
v[0]=0;
//precomputare
for(i=1;i<=99;i++)
v[i]=(v[i-1]+lastDigitPow(i,i))%10;
//for(i=0;i<100;i++)
//printf("v[%d]=%d%c",i,v[i],i%10==0?'\n':' ');
fi=fopen("cifra.in","rt");
fo=fopen("cifra.out","wt");
fscanf(fi,"%d",&t);
fgetc(fi);
for(i=0;i<t;i++){
fgets(n,121,fi);
if(n[strlen(n)-1]=='\n')
n[strlen(n)-1]=0;
val=_StrToNrDiv100(n);
fprintf(fo, "%d\n", v[val] );
}
fclose(fi);
fclose(fo);
return 0;
}