import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef
{
static int [][][] dp;
static void preDP(){
dp=new int[16][145][10]; // ---> 10^15 so 16
for(int k=0;k<=9;k++){
dp[1][k][k]=1;
}
for(int i=2;i<=15;i++){
for(int j=0;j<=144;j++){
for(int k=0;k<=9;k++){
int rem=j-k;
if(rem>=0){
for (int m=0;m<=9;m++) {
dp[i][j][k]+=dp[i-1][rem][m];
}
}
}
}
}
}
{
// your code goes here
Scanner sc
=new Scanner
(System.
in); int t=sc.nextInt();
while(t-->0){
int sum=sc.nextInt();
preDP();
System.
out.
println(solve
(num,sum
)); }
}
static int digitSum(int n){
if(n==0)return 0;
return (n%10)+digitSum(n/10);
}
public static int solve
(String num,
int sum
){ int n=num.length();
int cnt=0;
for(int i=1;i<n;i++){
for(int j=1;j<=9;j++){
cnt+=dp[i][sum][j];
}
}
int [] d=new int[num.length()];
for(int i=0;i<num.length();i++){
d[i]=num.charAt(i)-'0';
}
int psum=0;
for(int i=0;i<n;i++){
int curr=d[i];
int f=0;
if(i==0){
f=1;
}
for(int j=f;j<curr;j++){
int b=sum-psum-j;
int rem=n-1-i;
if(b>=0){
if(rem>0){
for(int k=0;k<=9;k++){
cnt+=dp[rem][b][k];
}
}
else{
if(b==0)cnt++;
}
}
}
psum+=curr;
if(psum>sum) break;
}
if(psum==sum)cnt+=1;
return cnt;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBDb2RlY2hlZgp7CiAgICBzdGF0aWMgaW50IFtdW11bXSBkcDsKICAgIHN0YXRpYyB2b2lkIHByZURQKCl7CiAgICAgICAgZHA9bmV3IGludFsxNl1bMTQ1XVsxMF07ICAvLyAtLS0+IDEwXjE1IHNvIDE2CiAgICAgICAgZm9yKGludCBrPTA7azw9OTtrKyspewoJICAgICAgICBkcFsxXVtrXVtrXT0xOwoJICAgIH0KCSAgICBmb3IoaW50IGk9MjtpPD0xNTtpKyspewoJICAgICAgICBmb3IoaW50IGo9MDtqPD0xNDQ7aisrKXsKCSAgICAgICAgICAgIGZvcihpbnQgaz0wO2s8PTk7aysrKXsKCSAgICAgICAgICAgICAgICBpbnQgcmVtPWotazsKCSAgICAgICAgICAgICAgICBpZihyZW0+PTApewoJICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBtPTA7bTw9OTttKyspIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdW2tdKz1kcFtpLTFdW3JlbV1bbV07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9CiAgICB9CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJU2Nhbm5lciBzYz1uZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCWludCB0PXNjLm5leHRJbnQoKTsKCQl3aGlsZSh0LS0+MCl7CgkJICAgIGludCBzdW09c2MubmV4dEludCgpOwoJCSAgICBTdHJpbmcgbnVtPXNjLm5leHQoKTsKCQkgICAgcHJlRFAoKTsKCQkgICAgU3lzdGVtLm91dC5wcmludGxuKHNvbHZlKG51bSxzdW0pKTsKCQl9Cgl9CglzdGF0aWMgaW50IGRpZ2l0U3VtKGludCBuKXsKCSAgICBpZihuPT0wKXJldHVybiAwOwoJICAgIHJldHVybiAobiUxMCkrZGlnaXRTdW0obi8xMCk7Cgl9CglwdWJsaWMgc3RhdGljIGludCBzb2x2ZShTdHJpbmcgbnVtLGludCBzdW0pewoJICAgIGludCBuPW51bS5sZW5ndGgoKTsKCSAgICBpbnQgY250PTA7CgkgICAgZm9yKGludCBpPTE7aTxuO2krKyl7CgkgICAgICAgIGZvcihpbnQgaj0xO2o8PTk7aisrKXsKCSAgICAgICAgICAgIGNudCs9ZHBbaV1bc3VtXVtqXTsKCSAgICAgICAgfQoJICAgIH0KCSAgIGludCBbXSBkPW5ldyBpbnRbbnVtLmxlbmd0aCgpXTsKCSAgIGZvcihpbnQgaT0wO2k8bnVtLmxlbmd0aCgpO2krKyl7CgkgICAgICAgZFtpXT1udW0uY2hhckF0KGkpLScwJzsKCSAgIH0KCSAgIGludCBwc3VtPTA7IAogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspeyAKICAgICAgICAgICAgaW50IGN1cnI9ZFtpXTsKICAgICAgICAgICAgaW50IGY9MDsKICAgICAgICAgICAgaWYoaT09MCl7CiAgICAgICAgICAgICAgICBmPTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPWY7ajxjdXJyO2orKyl7CiAgICAgICAgICAgICAgICBpbnQgYj1zdW0tcHN1bS1qOwogICAgICAgICAgICAgICAgaW50IHJlbT1uLTEtaTsKICAgICAgICAgICAgICAgIGlmKGI+PTApewogICAgICAgICAgICAgICAgICAgIGlmKHJlbT4wKXsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBrPTA7azw9OTtrKyspewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY250Kz1kcFtyZW1dW2JdW2tdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGI9PTApY250Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHBzdW0rPWN1cnI7CiAgICAgICAgICAgIGlmKHBzdW0+c3VtKSBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYocHN1bT09c3VtKWNudCs9MTsKICAgICAgICByZXR1cm4gY250OwoJfQp9Cg==