#include <bits/stdc++.h>
using namespace std;
inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T>
inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
using ll = long long;
using ull = unsigned long long;
const ll MOD = 1000000007LL;
template <class ll>
inline ll getCeilExponent(ll a) {
  if (a <= 0) {
    throw invalid_argument("Vaule equal to or less than 0 should not be valid");
  }
  ll index = 0;
  --a;
  for (; a != 0; a >>= 1) {
    ++index;
  }
  return index;
}
template <class ll>
inline ll getFloorExponent(ll a) {
  if (a <= 0) {
    throw invalid_argument("Vaule equal to or less than 0 should not be valid");
  }
  ll index = 0;
  a >>= 1;
  for (; a != 0; a >>= 1) {
    ++index;
  }
  return index;
}
map<ll, ull> getPrimeFactorization(ll num) {
  map<ll, ull> primeToCount;
  int rootNum = sqrt(num);
  vector<bool> isCompositeNumber(rootNum + 1, false);
  for (int p = 2; num != 1 && p <= rootNum; ++p) {
    if (!isCompositeNumber[p]) {
      for (int i = p * 2; i <= rootNum; i += p) {
        isCompositeNumber[i] = true;
      }
      int count = 0;
      while (num % p == 0) {
        ++count;
        num /= p;
      }
      if (count >= 1) {
        primeToCount.insert(make_pair(p, count));
      }
    }
  }
  if (num != 1) {
    primeToCount.insert(make_pair(num, 1));
  }
  return primeToCount;
}
template <class ll>
inline ll getGCD(ll a, ll b) {
  if (b == 0) {
    return a;
  }
  return getGCD(b, a % b);
}
template <class ll>
inline pair<ll, ll> getBezoutsIdentitySoulution(ll a, ll b) {
  if (b == 0) {
    return {1, 0};
  }
  auto sol = getBezoutsIdentitySoulution(b, a % b);
  return {sol.second, sol.first - (a / b) * sol.second};
}
inline ll getModValue(ll a, ll m) { return (a % m + m) % m; }
inline ll getModInverse(ll a, ll m) {
  auto sol = getBezoutsIdentitySoulution(a, m);
  if (a * sol.first + m * sol.second != 1) {
    return -1;
  }
  return getModValue(sol.first, m);
}
ll getModCombinatorialNumber(ll n, ll r, ll m) {
  ll res = 1;
  for (; n > 0; --n, --r) {
    res = (((res * n) % m) * getModInverse(n, m)) % m;
  }
  return getModValue(res, m);
}
ll getModPower(ll base, unsigned t, ll m) {
  if (t == 0) {
    return 1LL;
  }
  auto res = getModPower(base, t >> 1, m);
  res = getModValue(res * res, m);
  if (t % 2 == 1) {
    res = getModValue(res * base, m);
  }
  return res;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll k;
  cin >> k;
  for (ll i = 1; i <= k; ++i) {
    ll q = i / 9;
    ll r = i % 9;
    if (r == 0) {
      --q;
      r = 9;
    }
    cout << toString(r);
    if (q >= 3) {
      cout << "0";
      --q;
    }
    for (int j = 0; j < q; ++j) {
      cout << "9";
    }
    cout << endl;
  }
  return 0;
}
