#include <bits/stdc++.h>
template <class... Ts>
using tuple_t = std::tuple<Ts...>;
template <class T, class U>
using map_t = std::map<T, U>;
template <class T, class U>
using pair_t = std::pair<T, U>;
template <class T>
using vector_t = std::vector<T>;
template <class T>
using set_t = std::set<T>;
uint64_t digit(uint64_t num, uint64_t base = 10) {
  uint64_t i = 0;
  while (num) {
    ++i;
    num /= base;
  }
  return i;
}
uint64_t digit_sum(uint64_t num, uint64_t base = 10) {
  uint64_t i = 0;
  while (num) {
    i += num % base;
    num /= base;
  }
  return i;
}
double f(uint64_t n) { return ((double)n) / digit_sum(n); }
int main() {
  int K;
  std::cin >> K;
  vector_t<int> snuke{1, 2, 3, 4, 5, 6, 7, 8, 9};
  std::vector<pair_t<uint64_t, double>> candidates;
  uint64_t n = 19;
  while (snuke.size() < K) {
    double nf = f(n);
    candidates.push_back(std::make_pair(n, nf));
    for (int i = 0; i < candidates.size(); ++i) {
      if (nf < candidates[i].second) {
        candidates.erase(candidates.begin() + i);
        --i;
      }
    }
    if (candidates[0].second * digit(n) * 9 < n) {
      auto& front = candidates.front();
      snuke.push_back(front.first);
      candidates.erase(candidates.begin());
    }
    if (n < 99)
      n += 10;
    else if (n < 9999)
      n += 100;
    else if (n < 99999)
      n += 1000;
    else if (n < 999999)
      n += 10000;
    else if (n < 9999999)
      n += 100000;
    else
      n += 1000000;
  }
  for (int i = 0; i < K; ++i) {
    std::cout << snuke[i] << std::endl;
  }
  return 0;
}
