#include <bits/stdc++.h>
using namespace std;
double SCALE = 1.0;
double OFFSET_X = 0.0;
double OFFSET_Y = 0.0;
const int IINF = 1 << 28;
const int MOD = 1e9 + 7;
const double INF = 1e30;
const double EPS = 1e-10;
const double PI = acos(-1.0);
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};
long long calc(long long n) {
  long long ans = 0;
  while (n > 0) {
    ans += n % 10;
    n /= 10;
  }
  return ans;
}
pair<double, long long> insert(int n, char digit[16]) {
  long long tmp = 0;
  for (int i = 0; i < n; ++i) tmp = tmp * 10 + digit[i];
  return make_pair((double)tmp / calc(tmp), tmp);
}
int main() {
  long long k;
  cin >> k;
  set<pair<double, long long>> s;
  for (int i = 0; i < 15; ++i) {
    char digit[16];
    digit[i] = 1;
    for (int j = 0; j < i + 1; ++j) {
      for (int k = 0; k < j; ++k) digit[k] = 0;
      for (int k = j + 1; k < i; ++k) digit[k] = 9;
      for (int k = 0; k < j; ++k) {
        for (int l = 0; l < 10; ++l) {
          digit[k] = l;
          s.insert(insert(i, digit));
        }
      }
    }
  }
  int cnt = 0;
  long long max_val = 0;
  for (auto& p : s) {
    if (max_val < p.second) {
      cout << p.second << endl;
      max_val = p.second;
      ++cnt;
      if (cnt == k) break;
    }
  }
}
