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 <stdio.h>
#include <string.h>
#include <ctype.h>
#define uLL unsigned long long
uLL num[1000000],sum[1000000];
#define min(a,b) (((a)<(b))?(a):(b))
uLL get(uLL *a)
{
	uLL i,j,k;
	j=1;k=0;
	for (i=1;i<=*a;i++)
	{
		k+=a[i]*j;
		j=j*10;
	}
	return k;
}
uLL pop(uLL x)
{
	uLL a;
	a=0;
	while (x>0)
	{
		a+=x%10;
		x=x/10;
	}
	return a;
}
int main()
{
//	freopen("in.in","r",stdin);
	uLL i,j,k,a,b,c,n,ans;
	scanf("%llu",&n);
	*num=1;num[1]=1;k=0;
/*	for (i=1;i<=9;i++)
	{
		printf("%llu\n",i);k+=1;if (k==n) {goto FIN;}
	}
	for (i=1;i<=9;i++)
	{
		printf("%llu\n",i*10+9);k+=1;if (k==n) {goto FIN;}
	}
	for (i=1;i<=9999999;i++)
	{
		printf("%llu\n",i*100+99);k+=1;if (k==n) {goto FIN;}
	}*/
	while (1)
	{
		for (j=1;j<=9;j++)
		{
			num[*num]=j;k+=1;
			a=get(num);
			printf("%llu %lf\n",a,(double)a/((*num-1)*9+j));
			if (k==n) {goto FIN;}
		}
		*num+=1;
	}
/*	for (i=1;i<=2000;i++)
	{
		//printf("%llu %lf\n",i,(double)i/pop(i));
		printf("%llu %lf\n",i*10+9,(double)(i*10+9)/pop(i*10+9));
	}*/
	FIN:
	return 0;
}