Problem:
Score : 500 points

Problem Statement

Let S(n) denote the sum of the digits in the decimal notation of n.
For example, S(123) = 1 + 2 + 3 = 6.

We will call an integer n a Snuke number when, for all positive integers m such that m > n, \frac{n}{S(n)} \leq \frac{m}{S(m)} holds.

Given an integer K, list the K smallest Snuke numbers.

Constraints

1 \leq K

The K-th smallest Snuke number is not greater than 10^{15}.

Input

Input is given from Standard Input in the following format:

K

Output

Print K lines. The i-th line should contain the i-th smallest Snuke number.

Sample Input 1

10

Sample Output 1

1
2
3
4
5
6
7
8
9
19

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<stack>
#include<queue>
#include<map>
#include<tuple>
#include<algorithm>
#include<numeric>
#include<cmath>

#define print(x) cout << #x << " = " << x << endl;

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using vi = vector<int>;

const int mod = 1e9 + 7;
const long double pi = 3.141592653589793238462643383279502884197;
const long double eps = 1e-7;


int main() {
	int K;
	cin >> K;
	
	if (K < 10) {
		for (int i = 1; i <= K; ++i) {
			cout << i << endl;
		}
	}
	else {
		for (int i = 1; i <= 9; ++i) {
			cout << i << endl;
		}

		K -= 9;

		int buf = 9;
		int base = 1;
		int ndigits = 1;
		while (K != 0) {
			if (buf / (int)pow(10, ndigits - 1) == 9) {
				base *= 10;
				++ndigits;
			}
			buf += base;
			cout << buf << endl;
			--K;
		}
	}

	return 0;
}