#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define test cerr << "test"
#define print(x) cerr << #x << " = " << x << '\n'
#define printarr(x, n) for (int i = 1; i <= n; i++) cerr << #x << "[" << i << "] = " << x[i] << '\n'
const int N = 20;
ll k;
int a[N]; ll f[N][N][2][2];
ll dfs(int i, int lst, bool lim, bool zro) {
if (i == 0 && !zro) return 1;
if (f[i][lst][lim][zro] != -1) return f[i][lst][lim][zro];
ll ans = 0; int mx = lim ? a[i] : 9;
for (int j = 0; j <= mx; j++) if (j != lst || zro) {
// printf ("i = %d, lst = %d, j = %d\n", i,lst, j);
ans += dfs(i - 1, j, lim && j == mx, zro && j == 0);
}
return f[i][lst][lim][zro] = ans;
}
bool check(ll x) {
int len = 0; memset(f, -1, sizeof f);
for (; x; x /= 10) a[++len] = x % 10;
// cout << dfs(len, -1, true, true) << '\n';
return dfs(len, -1, true, true) < k;
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
// check(2506230722);
int T; for (cin >> T; T--; ) {
cin >> k;
ll l = 1, r = 1e18, ans = 0;
while (l <= r) {
ll mid = (l + r) >> 1;
// print(mid);
if (check(mid)) l = mid + 1;
else r = mid - 1, ans = mid;
}
cout << ans << '\n';
}
return 0;
}