#include <bits/stdc++.h>
using namespace std;
using VS = vector<string>;
using LL = long long;
using VI = vector<int>;
using VVI = vector<VI>;
using PII = pair<int, int>;
using PLL = pair<LL, LL>;
using VL = vector<LL>;
using VVL = vector<VL>;
const int INF = 1e9;
const LL LINF = 1e16;
const LL MOD = 1000000007;
const double PI = acos(-1.0);
int DX[8] = {0, 0, 1, -1, 1, 1, -1, -1};
int DY[8] = {1, -1, 0, 0, 1, -1, 1, -1};
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  auto digitsum = [](LL a) {
    LL ret = 0;
    while (a) {
      ret += a % 10;
      a /= 10;
    }
    return ret;
  };
  if (0) {
    VL ret;
    for (int(i) = (1); (i) < (100000); (i)++) {
      bool ok = 1;
      for (int(j) = (i + 1); (j) < (100000); (j)++) {
        ok &= (i * digitsum(j) <= j * digitsum(i));
      }
      if (ok) {
        ret.push_back(i);
      }
    }
    for (auto it : ret) {
      cout << it << ", ";
    }
    cout << endl;
    return 0;
  }
  if (0) {
    for (int(i) = (1); (i) < (1000 + 1); (i)++) {
      cout << i << " " << 1.0 * i / (1.0 * digitsum(i))
           << (i % 10 == 9 ? " Suf9" : "") << endl;
    }
    return 0;
  }
  LL N;
  cin >> N;
  VL ans;
  LL ten = 1;
  for (int(i) = (0); (i) < (16); (i)++) {
    for (int(j) = (1); (j) < (135 + 1); (j)++) {
      ans.push_back(ten * (j + 1) - 1);
    }
  }
  sort(begin(((ans))), end(((ans))));
  (ans).erase(unique(begin(((ans))), end(((ans)))), end((ans)));
  set<LL> prohibit(begin((ans)), end((ans)));
  for (int(i) = (0); (i) < (int((ans).size())); (i)++) {
    for (int(j) = (i + 1); (j) < (int((ans).size())); (j)++) {
      LL a = ans[i], b = ans[j];
      if (a * digitsum(b) > b * digitsum(a)) {
        prohibit.erase(a);
        break;
      }
    }
  }
  for (int(k) = (0); (k) < (N); (k)++) {
    auto it = prohibit.begin();
    cout << *it << endl;
    prohibit.erase(it);
  }
  return 0;
}
