/*
推荐题型:三星
题意:注意看题中的数字序列,按此规律排下去,求第i个位置为什么数字。
思路:这道题原先思考的很消极,后来逐渐找到了方法,首先找到了临界状态,大概100000个数就会超过题中要求。模拟搜索过程求解。
使用数组a[i]表示第i个分序列长度,A[i]表示前i个分序列长度之和。然后模拟求解。结果WA!
*/
#include <cstdio>
#include <cmath>
const int nMax=100000;
int a[nMax];
long long A[nMax];
void init()
{
int r=1;
a[0]=0;
A[0]=0;
for(int i=1;i<nMax;i++)
{
if(i==10 || i==100 || i==1000) r++;
a[i]=a[i-1]+r;
A[i]=A[i-1]+a[i];
}
}
void print(int r,int N)
{
char a[10];
sprintf(a,"%d",r);
printf("%c\n",a[N-1]);
//printf("%d\n",r/(unsigned)(pow((double)10,a[r]-N))%10);
}
int main()
{
freopen("f://data.in","r",stdin);
//freopen("f://data.out","w",stdout);
int T;
long long N;
init();
scanf("%d",&T);
while(T--)
{
scanf("%lld",&N);
int l=1,r=nMax;
while(l<r)
{
int m=l+(r-l)/2;
if(A[m]>=N) r=m;
else l=m+1;
}
N-=A[r-1];
l=1;
while(l<r)
{
int m=l+(r-l)/2;
if(a[m]>=N) r=m;
else l=m+1;
}
N-=a[r-1];
print(r,N);
}
return 0;
}