#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int cnk(int n, int k)
{
int a,b;
a=b=;
for(int i=; i<k; i++)
{
a *= n--;
b *= (i+);
}
return a/b;
}
int arrange_calculate(int *a)
{
int n=;
int ans=;
for(int i=; i<; i++)
n += a[i];
for(int i=; i<; i++)
if(a[i]>)
{
ans *= cnk(n, a[i]);
n -= a[i];
}
return ans;
}
int main()
{
int T,N;
cin>>T;
for(int i=; i<T; i++)
{
cin>>N;
int a[]={}; //记录N中1-9出现的次数
int total=; //记录N的各个位上的数之和
int count=; //保存N有多少位,1表示个位,2表示十位,3表示百位,以此类推
while(N)
{
int temp = N%;
total += temp;
a[temp]++;
N /=;
count++;
}
int arrangeNum = arrange_calculate(a);
int s=;
for(int j=; j<count; j++)
{
s += total;
total *= ;
}
int ans;
if(arrangeNum<count) //此时输入的N一定是22222这种各个位上的数都相同的这种类型的数
ans = s/count;
else
ans = (int)(s * (arrangeNum*1.0/count)); //arrangeNum不一定是count的整数倍,比如2233对应的count=4,arrangeNum=6
cout<<ans<<endl;
}
return ;
}