#include<bits/stdc++.h>
using namespace std;
#define lop(i,n) for(i=0;i<n;i++)
#define lop1(i,n) for(ll i=1;i<=n;i++)
#define lopr(i,n) for(i=n-1;i>=0;i--)
#define ll long long int
#define pb push_back
#define all(v) v.begin(),v.end()
#define IOS  ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define endl "\n"
#define F first
#define S second
#define mem(arr,val) memset(arr,val,sizeof(arr))
#define pii pair<int,int>
#define pll pair<ll,ll>
#define LCM(a,b) (a*b)/__gcd(a,b)
#define mii map<int,int>
#define mll map<ll,ll>
#define ub upper_bound
#define lb lower_bound
#define sz(x) (ll)x.size()
#define ld long double
#define pcnt(x) __builtin_popcountll(x)
const long long I1 = 1e9 + 7;
const long long I2 = 1e18;
const long long MAXM = 1e5 + 5;

template<typename T, typename T1>T maxn(T &a, T1 b) {if (b > a)a = b; return a;}
template<typename T, typename T1>T minn(T &a, T1 b) {if (b < a)a = b; return a;}

ll arr[MAXM];
bool isPrime(int n)
{
  if (n <= 1) return false;
  if (n <= 3) return true;

  if (n % 2 == 0 || n % 3 == 0) return false;

  for (int i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0)
      return false;

  return true;
}

int least_prime(int n) {
  int i;
  lop(i, 32) {
    if (isPrime(i) && n % i == 0)
      return i;
  }
}
bool isPrime(ll n)
{
  if (n <= 1) return false;
  if (n <= 3) return true;

  if (n % 2 == 0 || n % 3 == 0) return false;

  for (ll i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0)
      return false;

  return true;
}
ll gcd(ll a, ll b) {
  if (b == 0)
    return a;
  return gcd(b, a % b);
}



ll eval(ll m) {
  return (m * (m - 1) * (m - 2) * (m - 3) / 24);
}

// Returns factorial of n
ll fact(ll n)
{
  ll res = 1;
  for (ll i = 2; i <= n; i++)
    res = (res * i) % I1;
  return res;
}

ll binomialCoeff(ll n, ll k)
{
  // Base Cases
  if (k == 0 || k == n)
    return 1;

  // Recur
  return binomialCoeff(n - 1, k - 1) +
         binomialCoeff(n - 1, k);
}

ll nCr(ll n, ll r)
{
  return (fact(n) / (fact(r) * fact(n - r))) % I1;
}

ll leastFrequent(ll arr[], ll n)
{
  // Sort the array
  sort(arr, arr + n);

  // find the min frequency using linear traversal
  ll min_count = n + 1, res = -1, curr_count = 1;
  for (ll i = 1; i < n; i++) {
    if (arr[i] == arr[i - 1])
      curr_count++;
    else {
      if (curr_count < min_count) {
        min_count = curr_count;
        res = arr[i - 1];
      }
      curr_count = 1;
    }
  }

  // If last element is least frequent
  if (curr_count < min_count)
  {
    min_count = curr_count;
    res = arr[n - 1];
  }

  return res;
}
int findRem(ll y) {
  if (y == 1 || y == 2)
    return pow(14, y);
  int temp = findRem(y / 2);
  if (y % 2 == 0) {
    return (temp * temp) % 41;
  }
  else
    return (temp * temp * 14) % 41;
}


int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ll t;
  cin >> t;
  ll n, i, j, k;
  while (t--) {
    cin >> n;
    if (n == 1) cout << 9 << endl;
    else
    {
      cout << 9;
      n--;
      int j = 8;
      lop(i, n)
      {
        cout << j;
        j++;
        if (j > 9) j = 0;
      }
      cout << endl;
    }
  }
  return 0;
}
