#include <bits/stdc++.h>
using namespace std;
struct L {
  int t;
  int x;
  int y;
};
vector<int> loadn(int n) {
  vector<int> v(n);
  for (auto i = (0); i < (n); ++i) cin >> v[i];
  return v;
}
uint64_t modpower(const unsigned int N, const unsigned int K,
                  const unsigned int MOD) {
  uint64_t ret = 1;
  uint64_t k2 = N;
  for (auto i = (0); i < (31); ++i) {
    if ((K >> i) & 0x1) {
      ret *= k2;
      ret = ret % MOD;
    }
    k2 = (k2 * k2) % MOD;
  }
  return ret;
}
class ModCombinationMemo {
 public:
  const unsigned int N;
  const unsigned int MOD;
  vector<uint64_t> memo = {1};
  ModCombinationMemo(uint32_t N, uint32_t MOD) : N(N), MOD(MOD) {}
  uint64_t c(uint64_t k) {
    if (memo.size() > k) {
      return memo[k];
    }
    for (auto i = (memo.size()); i < (k + 1); ++i) {
      const auto number = (memo[i - 1] * (N - i + 1)) % MOD;
      const auto reverceDeon = modpower(i, MOD - 2, MOD);
      memo.push_back(number * reverceDeon % MOD);
    }
    return memo[k];
  }
};
uint64_t c(const unsigned int N, const unsigned int K, const unsigned int MOD) {
  if (K == 0) {
    return 1;
  }
  uint64_t n = 1, k = 1;
  for (auto i = (0); i < (K); ++i) {
    n *= N - i;
    k *= i + 1;
    n = n % MOD;
    k = k % MOD;
  }
  uint64_t powerk = modpower(k, MOD - 2, MOD);
  return (n * powerk) % MOD;
}
unsigned trailing_zeros(unsigned n) {
  if (!n) return -1;
  unsigned int c = 32;
  n &= -(signed)n;
  if (n) c--;
  if (n & 0x0000FFFF) c -= 16;
  if (n & 0x00FF00FF) c -= 8;
  if (n & 0x0F0F0F0F) c -= 4;
  if (n & 0x33333333) c -= 2;
  if (n & 0x55555555) c -= 1;
  return c;
}
unsigned int digitssum(uint64_t source) {
  int result = 0;
  while (source > 0) {
    result += source % 10;
    source /= 10;
  }
  return result;
}
struct oishisa {
  int64_t x;
  int64_t y;
  int64_t z;
};
int64_t cint() {
  int64_t i;
  cin >> i;
  return i;
}
int main(int argc, char *argv[], char *envp[]) {
  const int64_t K(cint());
  uint64_t out = 0;
  uint64_t i = 0;
  double m = 0;
  while (out < K) {
    i++;
    string st;
    if (i % 9) {
      st.push_back(('0' + i % 9));
    }
    for (auto digits = (0); digits < (i / 9); ++digits) {
      st.push_back('9');
    }
    double v = stoll(st) / digitssum(stoll(st));
    if (v >= m) {
      m = v;
      cout << st << endl;
      out++;
    }
  }
}
