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 Rust (1.15.1) (judge verdict: Wrong Answer)

fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}

fn read_vec<T: std::str::FromStr>() -> Vec<T> {
    read::<String>()
        .split_whitespace()
        .map(|e| e.parse().ok().unwrap())
        .collect()
}

fn read_vec2<T: std::str::FromStr>(n: u32) -> Vec<Vec<T>> {
    (0..n).map(|_| read_vec()).collect()
}
fn main(){
    let k = read::<i32>();
    let mut v = vec![1,2,3,4,5,6,7,8,9];
    let mut ans = 9;
    let mut sub = 9;
    loop{
        if ans == k {
            break;

        }
        sub = sub + 10;
        v.push(sub);
       ans = ans + 1;
    }
    for s in v{
        println!("{}", s);
    }
    // for i in 1..1000 as u32{

    //     let sum:f64 = i.to_string().chars().fold(0.0,|x,y| x+ y.to_digit(10).unwrap() as f64);
    //     let s:f64 = i.to_string().parse().unwrap();
    //     println!("{}",s/sum );
    // }
}