package main

import "os"
import "fmt"
import "bufio"
import "strconv"

func main() {
    var sc = bufio.NewScanner(os.Stdin)
    sc.Split(bufio.ScanWords)
    sc.Scan()
    k, _ := strconv.Atoi(sc.Text())
    a := []int{}
    for i := 1; true; i++ {
        if sunuke(i, i + 1) {
            a = append(a, i)
        }
        if len(a) >= k {
            break
        }
    }

    for i := 0; i < len(a); i++ {
        for j := i + 1; j < len(a); j++ {
            if a[i] > a[j] {
                tmp := a[j]
                a[j] = a[i]
                a[i] = tmp
            }
        }
    }

    for i := 0; i < len(a); i++ {
        fmt.Printf("%d\n", a[i])
    }
}

func sunuke(n int, m int) bool {
    if m > n {
        if (n / fn(n)) <= (m / fn(m)) {
            return true
        }
    }
    return false
}

func fn(v int) int {
    r := 0
    for i := 0; v >= 10; i++ {
        r = r + (v - (v / 10 * 10))
        v = v / 10
    }
    r = r + v
    return r
}
