#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
static void AMIN(T &x, U y) {
  if (y < x) x = y;
}
template <typename T, typename U>
static void AMAX(T &x, U y) {
  if (x < y) x = y;
}
template <typename T>
void sout(T &w) {
  for (auto x : w) cout << x << ", ";
  cout << endl;
}
int sum(long long x) {
  int r = 0;
  while (x != 0) r += x % 10, x /= 10;
  return r;
}
int main() {
  set<long long> w;
  for (int i = 1; i < (100); ++i) {
    long long x = i;
    while (x <= 2.5e15) {
      w.insert(x);
      x = x * 10 + 9;
    }
  }
  vector<long long> snukes;
  double mi = 1e16;
  for (auto it = w.end(); it != w.begin();) {
    it--;
    long long x = (*it);
    double xxx = 1. * x / sum(x);
    if (xxx <= mi) {
      mi = xxx;
      snukes.push_back(x);
    }
  }
  reverse((snukes).begin(), (snukes).end());
  int k;
  cin >> k;
  for (int i = 0; i < (int)(k); ++i) cout << snukes[i] << endl;
}
