#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long infLL = 0x3f3f3f3f3f3f3f3fLL;
int S(int n) {
  int ret = 0;
  do ret += n % 10;
  while (n /= 10);
  return ret;
}
inline bool check(int p, long long b) {
  long long n = p * b + (b - 1);
  return n <= b * S(n);
}
int main() {
  vector<long long> vec;
  for (long long b = 1; b < 1000000000000000LL; b *= 10) {
    int l = 1, r = 1000;
    while (l < r) {
      int mid = (l + r + 1) / 2;
      if (check(mid, b))
        l = mid;
      else
        r = mid - 1;
    }
    for (int i = (1); i <= (l); ++i) {
      long long n = i * b + (b - 1);
      if (vec.empty() || n > vec.back()) vec.push_back(n);
    }
  }
  int k;
  scanf("%d", &k);
  for (int i = 0; i < (k); ++i) printf("%lld\n", vec[i]);
  return 0;
}
