#include <cstdio>
#include <cstring>
#include <iostream>
using namespace Std;
const int MAXN = 20;
int BIT[MAXN];
__int64 dp[maxn][maxn][2];//dp[i][j][1] The number of digits in the number of J is 49, 0 bits does not contain
void Init ()
{
memset (DP, 0, sizeof (DP));
for (int i = 0;i <= 9;i++)
Dp[1][i][0] = 1,dp[1][i][1] = 0;
for (int i = 2;i < MAXN; i++)
for (int j = 0;j <= 9;j + +)
for (int k = 0;k <= 9; k++)
{
if (j = = 4 && k = = 9)
DP[I][J][1] + = (Dp[i-1][k][1] + dp[i-1][k][0]);
Else
{
DP[I][J][1] + = dp[i-1][k][1];
Dp[i][j][0] + = dp[i-1][k][0];
}
}
}
__int64 solve (int len)
{
__int64 ans = 0;
int flag = 0;
for (int i = len;i > 0; i--)
{
for (int j = 0;j < (i = = 1?) (bit[i]+1): Bit[i]); j + +)
ANS+=DP[I][J][1];
if (flag = = 2)
for (int j = 0;j < (i = = 1?) (Bit[i] + 1): Bit[i]); j + +)
ANS+=DP[I][J][0];
if (flag = = = 1 && i = = 1 && bit[1] ==9)
ans++;
if (flag = = = 1 && bit[i] = = 9)
flag = 2;
else if (bit[i] = = 4 && flag = = 0)
flag = 1;
else if (flag = = 1 && bit[i]!=4)
Flag = 0;
}
return ans;
}
int main ()
{
Freopen ("Input.txt", "R", stdin);
int T;
scanf ("%d", &t);
__int64 N;
while (t--)
{
scanf ("%i64d", &n);
__int64 t = n;
int len = 0;
while (t)
{
Bit[++len] = t%10;
t/=10;
}
Init ();
printf ("%i64d\n", Solve (len));
}
return 0;
}
Hdu3555bomb Digital DP