#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int sum(ll n) {
  int ans = 0;
  while (n) {
    ans += n % 10;
    n /= 10;
  }
  return ans;
}
ll update(ll m) {
  string sn = to_string(m);
  int bk = 0;
  for (int i = (sn.size() - 1) - 1; i >= 0; i--) {
    if (sn[i] == '9')
      continue;
    else {
      sn[i] = '9';
      bk = 1;
      break;
    }
  }
  if (bk == 0) {
    if (sn[0] != '9') {
      string b;
      b.push_back(sn[0]);
      sn[0] = to_string(1 + stoi(b))[0];
    } else {
      sn = '1' + sn;
    }
  }
  return stoll(sn);
}
ll snuke(ll n) {
  ll m = update(n);
  ;
  vector<pair<ll, ll>> ans;
  for (int(i) = 0; (i) < (3); (i)++) {
    pair<ll, ll> P = make_pair((double)m / sum(m), m);
    ans.push_back(P);
    m = update(m);
  }
  sort(ans.begin(), ans.end());
  return ans[0].second;
}
int main() {
  int K;
  cin >> K;
  if (K < 9) {
    for (int(i) = 0; (i) < (K); (i)++) cout << K + 1 << endl;
  } else {
    for (int(i) = 0; (i) < (8); (i)++) {
      cout << i + 1 << endl;
      K--;
    }
    ll ans = 9;
    string a;
    cout << ans << endl;
    while (K) {
      a = to_string(ans);
      if (a[0] == '1') {
        a[0] = '9';
        ans = stoll(a);
        cout << ans << endl;
      } else {
        a = "1" + a;
        ans = stoll(a);
        cout << ans << endl;
      }
      K--;
    }
  }
  return 0;
}
