#include #include using namespace std; using i32 = int; using i64 = long long; using i128 = __int128_t; using f64 = double; using p2 = pair; using p3 = tuple; using mint = atcoder::modint998244353; constexpr i64 inf = 1e18; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(18); _main(); } void _main() { i64 tt; cin >> tt; vector num(100000, 0); for (i64 i = 0; i < num.size(); i++) { i64 x = i; while (x > 0) num[i] = max(num[i], x % 10), x /= 10; } vector dp(10000, {-1, -1}); for (i64 i = 10; i < dp.size(); i++) { for (i64 s = 1; true; s++) { i64 x = i; i64 t = s; while (x > 0) { x -= num[t++]; } if (x == 0) { dp[i] = {s, t}; break; } } } for (;tt--;) { i64 n; cin >> n; if (n <= 9) { cout << n << " " << n << "\n"; continue; } if (n < dp.size()) { auto [l, r] = dp[n]; cout << l << " " << r - 1 << "\n"; continue; } i64 x = 0; for (i64 i = 17; i >= 2; i--) { x = x * 10 + 8; } x = x * 10 + 9; x *= 10; i64 s = x; // cout << x << "!\n"; // cout << i64(1e18) << "\n"; i64 y = x; y += n / 9; n -= n / 9 * 9; while (n != 0) { n -= 8; x--; if (n < 0) y--, n += 9; } assert(y >= s); assert(x >= s - 10); cout << x << " " << y - 1 << "\n"; } }