#include <bits/stdc++.h>
using namespace std;
long long pw10[18];
long long sumblocks(long long x) {
  long long z = 0;
  for (int i = 1; i < 18; i++) {
    long long lo = pw10[i - 1];
    long long hi = pw10[i] - 1;
    if (hi <= x) {
      z += -(1 + hi - lo) * (hi + lo - 2 * (1 + x)) / 2 * i;
    } else if (lo <= x) {
      z += (lo - x - 2) * (lo - x - 1) / 2 * i;
    }
  }
  return z;
}
long long sumone(long long x) {
  long long z = 0;
  for (int i = 1; i < 18; i++) {
    long long lo = pw10[i - 1];
    long long hi = pw10[i] - 1;
    if (hi <= x) {
      z += (1 + hi - lo) * i;
    } else if (lo <= x) {
      z += (1 - lo + x) * i;
    }
  }
  return z;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cerr.tie(nullptr);
  pw10[0] = 1;
  for (int i = 1; i < 18; i++) pw10[i] = pw10[i - 1] * 10;
  int q;
  cin >> q;
  while (q--) {
    long long k;
    cin >> k;
    k--;
    long long bl = 0;
    {
      long long l = 0, r = 1.5e9, o = -1;
      while (l <= r) {
        long long m = (l + r) >> 1;
        if (sumblocks(m) <= k) {
          o = m;
          l = m + 1;
        } else {
          r = m - 1;
        }
      }
      k -= sumblocks(o);
      bl = o + 1;
    }
    long long num = 0;
    {
      long long l = 0, r = bl, o = -1;
      while (l <= r) {
        long long m = (l + r) >> 1;
        if (sumone(m) <= k) {
          o = m;
          l = m + 1;
        } else {
          r = m - 1;
        }
      }
      k -= sumone(o);
      num = o + 1;
    }
    cout << to_string(num)[k] << '\n';
  }
}
