/*
dp[i][0|1|2]:没有49的个数|最高位是9,没有49的个数|有49的个数
dp[i][0]=10*dp[i-1][0]-dp[i-1][1]
dp[i][1]=dp[i-1][0]
dp[i][2]=10*dp[i-1][2]+dp[i-1][1]
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[30][4],n,t;
void init(){
dp[0][0]=1;
for(int i=1;i<=29;i++){
dp[i][0]=10*dp[i-1][0]-dp[i-1][1];
dp[i][1]=dp[i-1][0];
dp[i][2]=10*dp[i-1][2]+dp[i-1][1];
}
}
/*
49149249349449
*/
ll query(ll n){
ll tmp=n+1,res=0;
ll flag=0,m=0,a[29]={};
while(tmp)a[++m]=tmp%10,tmp/=10;
for(int i=m;i>=1;i--){
for(int j=0;j<a[i];j++){
res+=dp[i-1][2];
if(flag)res+=dp[i-1][0];
}
//处理余下的部分
if(!flag && a[i]>4)res+=dp[i-1][1];
if(a[i+1]==4&&a[i]==9)flag=1;
}
return res;
}
int main(){
init();
cin>>t;
while(t--){
cin>>n;
cout<<query(n)<<endl;
}
}