#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<int, int>;
using LP = pair<ll, ll>;
template <class S, class T>
istream &operator>>(istream &is, pair<S, T> &p) {
  return is >> p.first >> p.second;
}
template <class S, class T>
ostream &operator<<(ostream &os, const pair<S, T> &p) {
  return os << '{' << p.first << "," << p.second << '}';
}
template <class T>
istream &operator>>(istream &is, vector<T> &v) {
  for (T &t : v) {
    is >> t;
  }
  return is;
}
template <class T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  os << '[';
  for (int i = 0; i < (v.size()); ++i)
    os << v[i] << (i == v.size() - 1 ? ']' : ',');
  return os;
}
void Yes(bool b) { cout << (b ? "Yes" : "No") << endl; }
void YES(bool b) { cout << (b ? "YES" : "NO") << endl; }
template <class T>
bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
const int inf = 1001001001;
const ll linf = 1001001001001001001;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int k;
  cin >> k;
  vector<ll> v;
  for (int i = 0; i < (9); ++i) v.push_back(i + 1);
  for (int i = (1); i < (15); ++i) {
    string s(i, '9');
    for (int j = 0; j < (9); ++j) {
      v.push_back(stol(char('1' + j) + s));
    }
  }
  for (int i = 0; i < (k); ++i) cout << v[i] << "\n";
}
