#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
enum { MOD0 = 1000000000, MOD7 = 1000000007, MOD9 = 1000000009 };
vector<long long> all;
vector<long long> snuke;
int s(long long x) {
  long long ret = 0;
  while (x) {
    ret += x % 10;
    x /= 10;
  }
  return ret;
}
void regen() {
  long long m = all[all.size() - 1], sm = s(m), n, sn;
  for (int i = all.size() - 1; i >= 0; --i) {
    n = all[i];
    sn = s(n);
    if (m * sn >= n * sm) {
      m = n;
      sm = sn;
      snuke.push_back(m);
    }
  }
  reverse(snuke.begin(), snuke.end());
}
void gen() {
  long long cur = 1;
  long long pw10 = 1;
  while (cur <= 1000ll * 1000 * 1000 * 1000 * 1000 * 10) {
    all.push_back(cur);
    cur += pw10;
    if (cur >= 10 * pw10) {
      cur -= pw10;
      pw10 *= 10;
      cur += pw10;
    }
  }
  regen();
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  gen();
  int k;
  cin >> k;
  for (int i = 0; i < k; ++i) {
    cout << snuke[i] << '\n';
  }
  return 0;
}
