#include <bits/stdc++.h>
using namespace std;
vector<long long> transform(long long a) {
  vector<long long> v;
  while (a) v.push_back(a % 10), a /= 10;
  reverse(v.begin(), v.end());
  return v;
}
long long recover(vector<long long> a) {
  long long val = 0;
  for (long long i : a) val = val * 10 + i;
  return val;
}
long long sod(long long a) {
  long long ans = 0;
  while (a) ans += a % 10, a /= 10;
  return ans;
}
long long nxt(long long cur) {
  vector<long long> now = transform(cur);
  int len = now.size();
  vector<long long> ops;
  ops.push_back(cur);
  for (int i = 0; i < len; i++) {
    for (int j = now[i] + 1; j <= 9; j++) {
      vector<long long> mv = now;
      mv[i] = j;
      ops.push_back(recover(mv));
    }
  }
  sort(ops.begin(), ops.end(), [&](long long a, long long b) {
    long long va = a * sod(b), vb = b * sod(a);
    if (va == vb) return a < b;
    return va < vb;
  });
  return ops[0];
}
int main() {
  int k;
  cin >> k;
  long long now = 1;
  for (int i = 0; i < k; i++) {
    cout << now << endl;
    now = nxt(now + 1);
  }
  return 0;
}
