//
// main.cpp
// uva 10706 - Number Sequence
//
// Created by XD on 15/8/20.
// Copyright (c) 2015年 XD. All rights reserved.
//
//此题就是二分查找的应用 ,找到当前的n应该在哪个数的序列上,然后二分查找找到在这个数的哪个位置 二次二分查找就解决了问题
#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<vector>
#include <string.h>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <cstdio>
#define ll long long
using namespace std ;
const int maxn = 99990 + 10 ;
ll sum[maxn] ;
ll dp[maxn] ;
int upperBoard[10]
{
0 , 9,99,999,9999,99999
} ;
int digitNum(int x)
{
for (int i = 1; i < 7; i++) {
if (x <= upperBoard[i]) {
return i ;
}
}
return 0 ;
}
void init()
{
dp[0] = 0 ; sum[0] =0 ;
for (int i = 1; i < maxn; i++) {
dp[i] +=(dp[i-1]+digitNum(i) );
sum[i] +=(sum[i-1] + dp[i]) ;
}
}
int main(int argc, const char * argv[]) {
ll T ,n;
scanf("%lld" ,&T) ;
init() ;
while (T--) {
scanf("%lld" ,&n) ;
int pos = (int)(lower_bound(sum, sum + maxn, n) - sum) ;
n-=sum[pos-1] ;
pos = (int ) (lower_bound(dp, dp + maxn, n ) - dp) ;
ll which = n -dp[pos-1] ;
int digit_num = digitNum(pos) ;
int digit[10] ;
for (int i = 0 ; i < digit_num ; i++) {
digit[i] = pos %10 ;
pos/=10 ;
}
printf("%d\n" , digit[digit_num - which]) ;
}
return 0;
}