#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using frac = pair<ll, ll>;
ll k;
ll dig_sum(ll x) {
  ll res = 0;
  while (x) {
    res += x % 10;
    x /= 10;
  }
  return res;
}
ll to_int(string num) {
  ll res = 0;
  ll ten = 1;
  int sz = num.size();
  for (int i = sz - 1; i >= 0; i--) {
    res += ten * (ll)(num[i] - '0');
    ten *= 10;
  }
  return res;
}
bool func(string& alt, frac& tmp) {
  ll num = to_int(alt);
  ll dsum = dig_sum(num);
  if (tmp.first * dsum > num * tmp.second) {
    tmp = make_pair(num, dsum);
    return true;
  } else
    return true;
}
ll get_snuke(ll n) {
  ll res = n;
  string num = to_string(n);
  int m = num.size();
  frac tmp = make_pair(n, dig_sum(n));
  for (int(i) = 0; (i) < (m); (i)++) {
    string alt = num;
    for (char j = num[i] + 1; j <= '9'; j++) {
      alt[i] = j;
      for (int l = i + 1; l < m; l++) {
        alt[l] = '9';
      }
      if (func(alt, tmp)) {
        res = to_int(alt);
      }
    }
  }
  return res;
}
int main(void) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> k;
  ll tmp = 1;
  for (int(i) = 0; (i) < (k); (i)++) {
    if (tmp <= 8) {
      cout << tmp << '\n';
      tmp++;
      continue;
    }
    cout << tmp << '\n';
    tmp = get_snuke(tmp + 1);
  }
}
