#include <bits/stdc++.h>
using namespace std;
using index_t = int;
size_t s(size_t n) {
  size_t s = 0;
  while (n > 0) {
    s += n % 10;
    n /= 10;
  }
  return s;
}
int main() {
  int K;
  cin >> K;
  vector<pair<size_t, double>> cands;
  for (size_t d = 0; d < 15; ++d) {
    size_t u = pow(10, d);
    for (size_t i = 2; i <= 10; ++i) {
      size_t x = u * i - 1;
      cands.push_back({x, (double)x / (double)s(x)});
    }
  }
  cerr << "# cands: " << cands.size() << endl;
  double threshold = 0;
  unordered_set<size_t> excluded;
  cerr << "# excluded: ";
  for (const auto &p : cands) {
    if (p.second < threshold) {
      excluded.insert(p.first);
      cerr << p.first << ", ";
    } else
      threshold = p.second;
  }
  cerr << endl;
  int k(0);
  for (const auto &p : cands) {
    if (excluded.count(p.first) > 0) continue;
    cout << p.first << endl;
    if (++k >= K) break;
  }
}
