#include <bits/stdc++.h>
using namespace std;
long long qp(int a, long long b) {
  int ans = 1;
  do {
    if (b & 1) ans = 1ll * ans * a;
    a = 1ll * a * a;
  } while (b >>= 1);
  return ans;
}
long long qp(int a, long long b, int mo) {
  int ans = 1;
  do {
    if (b & 1) ans = 1ll * ans * a % mo;
    a = 1ll * a * a % mo;
  } while (b >>= 1);
  return ans;
}
long long gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
long long INF = 1e14;
const int MAX_N = 1 << 17;
const int cf = 100010;
long long atoi(string S) {
  long long len = S.size();
  long long ans = 0;
  for (long long i = 0; i < len; i++) {
    ans += qp(10, i) * (S[i] - '0');
  }
  return ans;
}
string itoa(long long n) {
  if (n == 0) return "0";
  string ans = "";
  int p = (log10(n) + 1) / 1;
  long long c = n;
  for (int i = 0; i < p; i++) {
    long long x = c % 10;
    char t = ('0' + x);
    ans += t;
    c /= 10;
  }
  return ans;
}
long long cnt = 0;
long long k;
double snuke(long long n) {
  string s = itoa(n);
  long long sum = 0ull;
  for (int i = 0; i < s.size(); i++) {
    sum += (s[i] - '0');
  }
  double ans = (double)n / (double)sum;
  return ans;
}
long long dsum(long long n) {
  string s = itoa(n);
  long long sum = 0ull;
  for (int i = 0; i < s.size(); i++) {
    sum += (s[i] - '0');
  }
  return sum;
}
void f(long long n) {
  if (cnt == k) return;
  string s = itoa(n);
  int m = s.size();
  if (s[m - 1] == '9') {
    s.push_back('1');
    for (int i = 0; i < m; i++) s[i] = '0';
    m++;
    long long cand;
    double rn = -1;
    long long ans;
    for (int i = 0; i < m; i++) {
      int j = s[i] - '0';
      while (j < 9) {
        s[i]++;
        j++;
        cand = atoi(s);
        if (rn == -1) {
          rn = snuke(cand);
          ans = cand;
        } else {
          if (snuke(cand) < rn) {
            ans = cand;
            rn = snuke(cand);
          }
        }
      }
    }
    cout << ans << endl;
    cnt++;
    f(ans);
  } else {
    long long cand;
    double rn = -1;
    long long ans;
    for (int i = 0; i < m; i++) {
      int j = s[i] - '0';
      while (j < 9) {
        s[i]++;
        j++;
        cand = atoi(s);
        if (rn == -1) {
          rn = snuke(cand);
          ans = cand;
        } else {
          if (snuke(cand) < rn) {
            ans = cand;
            rn = snuke(cand);
          }
        }
      }
    }
    cout << ans << endl;
    cnt++;
    f(ans);
  }
}
int main(void) {
  cin >> k;
  for (int i = 0; i < (9); i++) cout << i + 1 << endl;
  k -= 9;
  f(9ull);
  return 0;
}
