#include <bits/stdc++.h>
using namespace std;
const long long inf = (1ll << 62) - 1;
const long long mod = 998244353;
const long long N = 2e5 + 10;
const long double pi = 3.14159265358979323846;
long long bPow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) {
      res = (res * a) % mod;
    }
    b >>= 1;
    a = (a * a) % mod;
  }
  return res % mod;
}
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (b == 0) return a;
  return gcd(b, a % b);
}
vector<long long> fact(N, 0ll);
void factorial() {
  fact[0] = 1, fact[1] = 1;
  for (long long i = 2; i < N; i++) {
    fact[i] = (fact[i - 1] * i) % mod;
  }
}
long long ncr(long long n, long long r) {
  if (r > n) return 0;
  long long ans = fact[n] % mod;
  ans *= bPow(fact[r], mod - 2) % mod;
  ans %= mod;
  ans *= bPow(fact[n - r], mod - 2) % mod;
  ans %= mod;
  return ans;
}
vector<long long> primes(N, -1);
void sieve() {
  iota(primes.begin(), primes.end(), 0);
  for (long long i = 2; i * i <= N; ++i) {
    if (primes[i] == i) {
      for (long long j = 2 * i; j < N; j += i) {
        primes[j] = i;
      }
    }
  }
}
void solve() {
  long long q;
  cin >> q;
  vector<long long> dp(N, 0);
  dp[1] = 1;
  while (q--) {
    long long k;
    cin >> k;
    long long cur = 1, len = 0, next = 10, curLen = 1;
    char ans;
    bool found = false;
    while (true and !found) {
      if (cur == next) {
        next *= 10, curLen++;
        long long temp = dp[cur - 1] + curLen;
        if (temp < k) {
          dp[cur] = dp[cur - 1] + curLen;
          len += temp;
          k -= temp;
          cur++;
          continue;
        }
        for (long long i = 1; i <= cur and !found; ++i) {
          string s = to_string(i);
          if (s.size() < k) {
            k -= (long long)s.size();
          } else {
            ans = s[k - 1], k = 0;
            found = true;
            break;
          }
        }
        continue;
      }
      long long temp = dp[cur - 1] + curLen;
      if (temp < k) {
        dp[cur] = dp[cur - 1] + curLen;
        len += temp;
        cur++;
        k -= temp;
        continue;
      }
      for (long long i = 1; i <= cur and !found; ++i) {
        string s = to_string(i);
        if (s.size() < k) {
          k -= (long long)s.size();
        } else {
          ans = s[k - 1], k = 0;
          found = true;
          break;
        }
      }
    }
    cout << ans << " \n";
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long tc = 1, test = 1;
  while (tc--) {
    solve();
  }
}
