#include <bits/stdc++.h>
using namespace std;
struct Datum {
  Datum(int _s = 0, long long _x = 0) : s(_s), x(_x) {}
  bool operator<(const Datum& other) const {
    if (x * other.s == other.x * s) {
      return x > other.x;
    }
    return x * other.s > other.x * s;
  }
  Datum next() {
    long long res = x;
    long long b = 1;
    long long rem = 0;
    while (res != 0) {
      int d = res % 10;
      b *= 10;
      res /= 10;
      if (d != 0) {
        res += 1;
        break;
      }
    }
    rem = s - calc(res);
    res = res * b + smallest(rem).x;
    return Datum(s, res);
  }
  static int calc(long long x) {
    int res = 0;
    while (x > 0) {
      res += x % 10;
      x /= 10;
    }
    return res;
  }
  static Datum smallest(int sum) {
    long long res = 0;
    long long b = 1;
    Datum ans(sum);
    while (sum > 0) {
      int d = min(9, sum);
      sum -= d;
      res += d * b;
      b *= 10;
    }
    ans.x = res;
    return ans;
  }
  long long x;
  int s;
};
int main(int argc, char** argv) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int k;
  cin >> k;
  priority_queue<Datum> pq;
  const int N = 135 + 4;
  for (int i = 1; i <= N && i <= k; ++i) {
    Datum D = Datum::smallest(i);
    cout << D.x << '\n';
  }
  return 0;
}
