#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i=0; i<(int)(n); ++i)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
using Graph = vector<vi>;  // vi <=> vl
using vb = vector<bool>;
using boolGraph = vector<vb>;
using P = pair<int, int>;  // int <=> ll
const int MOD = 1e9+7;
const double EPS = 1e-9;

int main() {
  int n; cin >> n;
  
  vl snuke;
  ll digit = 1;
  rep(i,15) {
    rep(j,9) snuke.push_back((j+2)*digit - 1);
    digit *= 10;
  }

  ll irregular = 1099;
  int denominator = 19;
  digit = 100;
  
  rep(i,12) {
    ll num = irregular;
    int tmp = denominator;
    
    rep(j,9) {
      if (num/digit >= tmp) break;
      
      rep(k,9) snuke.push_back(num + digit*k)
      num += digit * 10;
      ++tmp;
    }

    (irregular *= 10) += 9;
    denominator += 9;
    digit *= 10;
  }

  irregular = 101 * 1e12 - 1;
  rep(i,9) {
    snuke.push_back(irregular);
    irregular += 1e12;
  }

  sort(all(snuke));

  rep(i,n) cout << snuke[i] << endl;
  return 0;
}
