#include <bits/stdc++.h>
typedef struct {
  long long n;
  double snk;
} QUEUE;
using namespace std;
int K;
priority_queue<QUEUE, vector<QUEUE>, greater<QUEUE> > que;
bool operator>(const QUEUE &que1, const QUEUE &que2) {
  if (que1.snk == que2.snk)
    return que1.n > que2.n;
  else
    return que1.snk > que2.snk;
};
long long Sum(long long num) {
  string s = to_string(num);
  long long res = 0;
  for (int i = 0; i < s.size(); ++i) res += s[i] - '0';
  return res;
}
int main(void) {
  cin >> K;
  QUEUE q;
  for (int i = 1; i <= 10000000; ++i) {
    q.n = i, q.snk = (double)i / (double)Sum(i);
    que.push(q);
  }
  for (int i = 0; i < K; ++i) {
    cout << que.top().n << endl;
    que.pop();
  }
  return 0;
}
