#include <bits/stdc++.h>
using namespace std;
long long MOD = 1000000007;
long long INF = 214748364700000000;
long double EPS = 1e-11;
long double PI = 3.141592653589793238;
template <typename T>
void remove(std::vector<T>& vector, unsigned int index) {
  vector.erase(vector.begin() + index);
}
using Graph = vector<vector<pair<long long, long long>>>;
long long d(long long n) {
  long long res = 0;
  while (n) {
    res += n % 10;
    n /= 10;
  }
  return res;
}
int main() {
  long long K;
  cin >> K;
  long long cnt = 1;
  for (long long i = (long long)1; i < (long long)K; i++) {
    for (long long j = (long long)1; j < (long long)max((long long)1, i - 2);
         j++) {
      long long n = j * (long long)pow(10, i - 1);
      for (long long k = (long long)0; k < (long long)10; k++) {
        n = j * (long long)pow(10, i - 1) + (k * (long long)pow(10, i - 2)) +
            (long long)pow(10, i - 2) - 1;
        cout << n << endl;
        cnt++;
        if (cnt > K) {
          return 0;
        }
      }
    }
    for (long long j = (long long)max((long long)1, i - 2); j < (long long)10;
         j++) {
      long long n =
          j * (long long)pow(10, i - 1) + (long long)pow(10, i - 1) - 1;
      cout << n << endl;
      cnt++;
      if (cnt > K) {
        return 0;
      }
    }
  }
}
