#include <bits/stdc++.h>
 
using namespace std;
 
#define ll long long
#define ull unsigned ll
#define ld long double
typedef vector<int> vi;
typedef multiset<int> mi;
typedef multiset<ll> mll;
typedef vector<ll> vll;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef set<ll> sll;
typedef vector<vector<int>> _2vi;
typedef vector<vector<ll>> _2vll;
#define all(v) ((v).begin()), ((v).end())
#define sz(v) ((ll)((v).size()))
 
#define vinp(v, n)                \
    for (ull i = 0; i < (n); i++) \
    cin >> (v)[i]
#define printv(v)      \
    for (auto i : (v)) \
    cout << i << " "
#define fr0(i, n) for (ull(i) = 0; (i) < (n); (i)++)
#define fr1(i, n) for (ull(i) = 1; (i) < (n); (i)++)
#define fr(i, x, n) for (ull(i) = (x); (i) < (n); (i)++)
#define _CRT_SECURE_NO_WARNING
const ll MOD = 1000000007;
 
void Bustany() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
#ifndef ONLINE_JUDGE
    freopen("./in.txt", "r", stdin), freopen("./out.txt", "w", stdout);
#endif
}
 
const ll N = 2e5 + 5;
vector<sll> adj(N);
//_2vll adj(N,vll(N));
vb vis;
map<ll, ll> mp;
 
void solve() {
    ll n;
    cin >> n;
    mp[0] = 6;
    mp[1] = 2;
    mp[2] = 5;
    mp[3] = 5;
    mp[4] = 4;
    mp[5] = 5;
    mp[6] = 6;
    mp[7] = 3;
    mp[8] = 7;
    mp[9] = 6;
    //min value = min length
    //488888   /39
    //208888  /
    //238888
    //max
    //7111111111
    string max = "";
    if (n % 2) {
        max += '7';
        for (ll i = 0; i < (n / 2) - 1; i++) {
            max += '1';
        }
    } else {
        for (ll i = 0; i < n / 2; i++) {
            max += '1';
        }
    }
    string min = "";
    map<ll, ll> mpp;
    mpp[2] = 1;
    mpp[3] = 7;
    mpp[4] = 4;
    mpp[5] = 2;
    mpp[6] = 6;
    mpp[7] = 8;
    if (n <= 7) {
        cout << mpp[n] << " " << max << endl;
        return;
    }
    for (ll i = 0; i < (n / 7) - 1; i++) {
        min += '8';
    }
    n %= 7;
    n += 7;
    if (n == 7) {
        min += '8';
    } else if (n == 8) {
        min = "10" + min;
    } else if (n == 9) {
        min = "18" + min;
    } else if (n == 10) {
        if (!min.empty()) {
            min.pop_back();
            min = "200" + min;
        } else
            min = "22" + min;
    } else if (n == 11) {
        min = "20" + min;
    } else if (n == 12) {
        min = "28" + min;
    } else if (n == 13) {
        min = "68" + min;
    }
    cout << min << " " << max << endl;
}
 
int main() {
    Bustany();
    ll t = 1;
    cin >> t;
    while (t--) {
        solve();
    }
}