#include <iostream>
#include <cmath>
using namespace std;
int Len(int n) // 求数字的长度函数;
{
return log10(double(n)) + 1;
}
int oj (int i, int temp) //一个比较傻的打表;不为别的,就选择最省时的;
{
if (temp < 10) return temp;
if (temp < 100)
{
if (i == 1) return temp/10;
else return temp%10;
}
if (temp < 1000)
{
if (i == 3) return temp%10;
if (i == 2) return (temp/10)%10;
if (i == 1) return (temp/100);
}
if (temp < 10000)
{
if (i == 4) return temp%10;
if (i == 3) return (temp/10)%10;
if (i == 2) return (temp/100)%10;
if (i == 1) return (temp/1000);
}
if (temp < 100000)
{
if (i == 5) return temp%10;
if (i == 4) return (temp/10)%10;
if (i == 3) return (temp/100)%10;
if (i == 2) return (temp/1000)%10;
if (i == 1) return (temp/10000);
}
if (temp < 1000000)
{
if (i == 6) return temp%10;
if (i == 5) return (temp/10)%10;
if (i == 4) return (temp/100)%10;
if (i == 3) return (temp/1000)%10;
if (i == 2) return (temp/10000)%10;
if (i == 1) return (temp/100000);
}
return 0;
}
int research(int i)
{
__int64 sum = 0; //这个数非常大,引用的__int64;也是第一次用;
int temp = 1;
int j = 0;
int len = 0;
while (sum < i) //第一轮查找,找该数所在的串系列;
{
// len = 0;
// for (int m = 1; m <= temp; m++)本来是要去这样做的,结果发现len 可以保留,就直接拿来用了,效果不错;
len+=Len(temp);
sum+=len;
temp++;
}
if (sum == i)
{
temp = temp - 1;
int turn = temp - (temp/10)*10;
return turn;
}
else
{
sum =sum - len;
temp = 0;
for (j = sum ; sum < i ; ) //第二轮查找,找到要找位的前一个数字;
{
temp++;
sum +=Len(temp);
}
if (sum == i) return temp%10;
else
{
sum -=Len(temp);
i = i - sum;
return oj(i,temp); //第三轮查找;确定最终位置的数字;
}
}
}
int main ()
{
int n ;
cin >> n;
while (n--)
{
int num;
cin >> num;
cout<<research(num)<<endl;
}
return 0;
}