#include <bits/stdc++.h>
using namespace std;
vector<long long> sunuke;
long long S(long long n) {
  string str = to_string(n);
  long long sum = 0;
  for (long long i = 0; i < str.size(); i++) {
    sum += str[i] - '0';
  }
  return sum;
}
bool check(long long n, long long k) {
  if (pow(10, k) * S(n) / n >= 1) {
    return true;
  } else {
    return false;
  }
}
signed main(void) {
  long long K;
  cin >> K;
  long long cnt = 0;
  long long pow_10 = 0;
  while (cnt <= K) {
    for (long long i = 0; i <= pow_10; i++) {
      if (9 * (pow_10 + 1) / pow(10, pow_10 - i) >= 1) {
        if (pow_10 > i) {
          long long tmp = pow(10, pow_10);
          for (long long j = 0; j < i; j++) {
            tmp += 9 * pow(10, j);
          }
          if (check(tmp, i)) {
            for (long long j = 0; j <= 9; j++) {
              cout << tmp + j * pow(10, i) << endl;
              cnt++;
              if (cnt >= K) {
                return 0;
              }
            }
          }
        } else {
          long long tmp = pow(10, i);
          for (long long j = 0; j < i; j++) {
            tmp += 9 * pow(10, j);
          }
          if (check(tmp, i)) {
            for (long long j = 0; j <= 8; j++) {
              cout << tmp + j * pow(10, i) << endl;
              cnt++;
              if (cnt >= K) {
                return 0;
              }
            }
          }
        }
      }
    }
    pow_10++;
  }
}
