#include <bits/stdc++.h>
using namespace std;
long long getSumD(long long x) { return x == 0 ? 0 : x % 10 + getSumD(x / 10); }
long double getSN(long long x) { return x * 1. / getSumD(x); }
vector<long long> posn;
int main() {
  for (long long cd = 0; cd < 14; cd++) {
    for (long long i = 1; i < 100; i++) {
      long long x = i;
      for (long long k = 0; k < cd; k++) {
        x *= 10;
        x += 9;
      }
      posn.push_back(x);
    }
  }
  sort(posn.begin(), posn.end());
  unique(posn.begin(), posn.end());
  int k;
  cin >> k;
  for (long long i = 0; i < posn.size(); i++) {
    bool b = 0;
    for (long long j = i + 1; j < posn.size(); j++) {
      if (posn[i] * getSumD(posn[j]) > posn[j] * getSumD(posn[i])) {
        b = 1;
        break;
      }
    }
    if (!b) {
      k--;
      cout << posn[i] << "\n";
      if (k == 0) {
        return 0;
      }
    }
  }
  return 0;
  return 0;
}
