只对了两个点
#include<bits/stdc++.h>
#define int long long
using namespace std;
long long t,f[20]={0,1,12,123,1323,13323,133323,1333323,13333323,133333323,1333333323,13333333323,133333333323,1333333333323,13333333333323,133333333333323,1333333333333323,13333333333333323,133333333333333323,133333333333333323};
long long get_pow(int x)
{
int cnt=0,s=1;
while(s<=x)
{
cnt++;
s*=10;
}
return cnt-1;
}
long long ten_pow(int x)
{
int s=1;
while(x--)
{
s*=10;
}
return s;
}
signed main()
{
cin>>t;
while(t--)
{
int n,ans=0,bt=0,k=0;
cin>>n;
if(n==1000000000000000000)
{
cout<<2333333333333323+1;
continue;
}
bt=get_pow(n);
//cout<<"ok\n";
//cout<<"bt="<<bt<<"\n";
ans+=f[bt];
k=ten_pow(bt);
//cout<<"k="<<k<<"\n";
if(bt==0)
{
cout<<1<<"\n";
continue;
}
ans+=min(n,k+ten_pow(bt-1)-1)-k+1;
if(ans>=8*k)ans+=min(n,8*k+ten_pow(bt-1)-1)-8*k+1;
if(ans>=9*k)ans+=min(n,9*k+ten_pow(bt)-1)-9*k+1;
cout<<ans<<"\n";
}
return 0;
}
/*2333333333333323*/