#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9, MOD = 1e9 + 7, ohara = 1e6;
const long long LINF = 1e18;
long long int n, cnt = 0, ans = 0, a, b, c, d, cmp, cmpp, m, h, w, x, y,
                 sum = 0, pos;
int dy[] = {1, 0, -1, 0};
int dx[] = {0, 1, 0, -1};
string alph("abcdefghijklmnopqrstuvwxyz"), s;
bool fl = true;
struct edge {
  int to, cost;
};
long long Sum(int x) {
  sum = 0;
  while (x != 0) {
    sum += x % 10;
    x /= 10;
  }
  return sum;
}
int main(void) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> n;
  if (n <= 9) {
    for (long long int(i) = 0; (i) < (int)(n); (i)++) {
      cout << (i + 1) << endl;
    }
  } else {
    for (long long int(i) = 0; (i) < (int)(9); (i)++) {
      cout << (i + 1) << endl;
    }
    n -= 9;
    cnt = 19;
    while (1) {
      double Q, QQ, QQQ = 0;
      fl = true;
      Q = (double)cnt / Sum(cnt);
      for (long long int i = (1); i < (3000); i++) {
        QQ = (double)(cnt + 10 * i) / Sum(cnt + 10 * i);
        if (fl)
          QQQ = QQ, fl = false;
        else
          QQQ = min(QQQ, QQ);
      }
      if (Q <= QQQ) {
        cout << (cnt) << endl;
        n--;
        if (n == 0) break;
      }
      cnt += 10;
    }
  }
  return 0;
}
