#include <bits/stdc++.h>
const int INF = 1e9;
const int MOD = 1e9 + 7;
const long long LINF = 1e18;
using namespace std;
void CINT() {}
template <class Head, class... Tail>
void CINT(Head&& head, Tail&&... tail) {
  cin >> head;
  CINT(move(tail)...);
}
template <class T = long long>
T IN() {
  T x;
  cin >> x;
  return (x);
}
template <class Head>
void VT(Head head) {}
template <class Head, class Seco, class... Tail>
void VT(Head&& head, Seco&& seco, Tail&&... tail) {
  seco.resize(head);
  VT(head, move(tail)...);
}
void VT2() {}
template <class Head, class... Tail>
void VT2(Head&& head, Tail&&... tail) {
  for (auto& youso_ : (head)) cin >> youso_;
  VT2(move(tail)...);
}
template <class Head>
void VT3(Head&& head) {}
template <class Head, class Seco, class... Tail>
void VT3(Head&& head, Seco&& seco, Tail&&... tail) {
  seco[head] = IN();
  VT3(head, move(tail)...);
}
int main() {
  long long n;
  CINT(n);
  vector<long long> v = {1,    2,    3,    4,    5,    6,    7,    8,    9,
                         19,   29,   39,   49,   59,   69,   79,   89,   99,
                         199,  299,  399,  499,  599,  699,  799,  899,  999,
                         1099, 1199, 1299, 1399, 1499, 1599, 1699, 1799, 1899};
  long long va = min((long long)v.size(), n);
  for (long long i = 0; i < (va); ++i) cout << (v[i]) << endl;
  n -= v.size();
  if (n <= 0) return 0;
  for (long long i = (1); i < (1e6); ++i) {
    int bound = i;
    int bound2 = 10 * (i + 1) + 9;
    for (long long j = (bound); j < (bound2); ++j) {
      cout << j;
      for (long long k = 0; k < (i + 2); ++k) cout << "9";
      cout << endl;
      --n;
      if (!n) return 0;
    }
  }
  return 0;
}
