#include <bits/stdc++.h>
using namespace std;
struct data {
  long long p;
  int sum;
  double q;
};
struct com {
  bool operator()(data& t1, data& t2) { return t1.q > t2.q; }
};
int i, j, n;
priority_queue<data, vector<data>, com> q;
int main() {
  scanf("%d", &n);
  q.push({1, 1, 1.0});
  while (n--) {
    data x = q.top();
    q.pop();
    printf("%lld\n", x.p);
    if (x.p * 10ll + 9 <= 1000000000000000ll)
      q.push(
          {x.p * 10ll + 9, x.sum + 9, (double)(x.p * 10ll + 9) / (x.sum + 9)});
    if (x.p < 9) {
      q.push({x.p + 1, x.sum + 1, (double)(x.p + 1) / (x.sum + 1)});
    } else if (x.p > 10 && x.p % 10)
      q.push({x.p - 1, x.sum - 1, (double)(x.p - 1) / (x.sum - 1)});
  }
}
