#include <bits/stdc++.h>
long long ipow10(int x) {
  long long y = 1;
  for (int i = 0; i < x; ++i) y *= 10;
  return y;
}
double ndivsn(long long n) {
  std::stringstream ss;
  ss << n;
  std::string ns = ss.str();
  long long sn = 0;
  for (char ch : ns) {
    sn += (ch - '0');
  }
  return (double)n / (double)sn;
}
int main() {
  int k;
  std::cin >> k;
  int i = 0;
  for (int keta = 0;; ++keta) {
    for (int top = 1; top <= 9; ++top) {
      long long n = ipow10(keta) * top + ipow10(keta) - 1;
      for (int xketa = keta - 1; xketa > 0; --xketa) {
        long long m = ipow10(keta) * top + ipow10(xketa) - 1;
        if (ndivsn(n) > ndivsn(m)) {
          n = m;
        }
      }
      std::cout << n << "\n";
      ++i;
      if (i >= k) return 0;
    }
  }
  return 0;
}
