#include <bits/stdc++.h>
using namespace std;
long long int s(long long int n) {
  long long int res = 0;
  while (n > 0) {
    res += n % 10;
    n /= 10;
  }
  return res;
}
long long int minSnuke(long long int n) {
  long long int res = n % 9;
  if (res == 0) res = 9;
  n -= res;
  while (n > 0) {
    res = res * 10 + 9;
    n -= 9;
  }
  return res;
}
vector<long long int> manySnuke(long long int n) {
  vector<long long int> res;
  res.push_back(n);
  long long int low = n % 10;
  long long int high = low;
  long long int t = n / 10;
  long long int c = 0;
  while (t > 0) {
    high = t % 10;
    t /= 10;
    c++;
  }
  if (c == 0) return res;
  for (int i = t + 1; i < 10; i++) {
    n = n + (long long int)pow(10, c) - 1;
    res.push_back(n);
  }
  return res;
}
int main() {
  long long int K;
  cin >> K;
  vector<pair<long long int, long long int> > res;
  for (int i = 1; i < 145; i++) {
    vector<long long int> tmp;
    tmp = manySnuke(minSnuke(i));
    for (int j = 0; j < tmp.size(); j++) {
      res.push_back(make_pair(tmp[j] / s(tmp[j]), tmp[j]));
    }
  }
  sort(res.begin(), res.end());
  for (int i = 0; i < K; i++) {
    cout << res[i].second << endl;
  }
}
