#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long int linf = 1LL << 50;
const double EPS = 1e-10;
long long int power(long long int x, long long int p) {
  long long int tmp = p;
  long long int curr = x;
  long long int res = 1;
  while (tmp) {
    if (tmp % 2 == 1) res = res * curr;
    curr = curr * curr;
    tmp /= 2;
  }
  return res;
}
double calc(long long int x) {
  double den = 0.0;
  string s = to_string(x);
  for (int i = 0; i < s.size(); i++) den += double(s[i] - '0');
  return (double)x / den;
}
bool comp(const pair<long long int, double> &a,
          pair<long long int, double> &b) {
  if (a.second != b.second)
    return a.second < b.second;
  else
    return a.first < b.first;
}
int main(int argc, char const *argv[]) {
  long long int k;
  cin >> k;
  vector<pair<long long int, double> > vec;
  for (int i = 0; i < 16; i++) {
    long long int tmp = power(10, i);
    for (int j = 1; j < 10; j++) {
      vec.push_back(make_pair((j * tmp + tmp - 1), calc(j * tmp + tmp - 1)));
    }
  }
  sort(vec.begin(), vec.end(), comp);
  long long int maxi = 0;
  vector<bool> ok = vector<bool>(vec.size(), true);
  long long int curr = 0;
  for (int i = 0; i < vec.size(); i++) {
    if (maxi > vec[i].first) {
      ok[i] = false;
    } else {
      maxi = max(maxi, vec[i].first);
      cout << vec[i].first << endl;
      curr++;
    }
    if (curr == k) break;
  }
  return 0;
}
