#!usr/bin/env python3
from collections import defaultdict
from collections import deque
from heapq import heappush, heappop
import sys
import math
import bisect
import random
def LI(): return list(map(int, sys.stdin.readline().split()))
def I(): return int(sys.stdin.readline())
def LS():return list(map(list, sys.stdin.readline().split()))
def S(): return list(sys.stdin.readline())[:-1]
def IR(n):
    l = [None for i in range(n)]
    for i in range(n):l[i] = I()
    return l
def LIR(n):
    l = [None for i in range(n)]
    for i in range(n):l[i] = LI()
    return l
def SR(n):
    l = [None for i in range(n)]
    for i in range(n):l[i] = S()
    return l
def LSR(n):
    l = [None for i in range(n)]
    for i in range(n):l[i] = SR()
    return l
sys.setrecursionlimit(1000000)
mod = 1000000007

#A
def A():
    return

#B
def B():
    return

#C
def C():
    return

#D
def D():
    m = defaultdict(lambda : None)
    def s(n):
        if m[n] != None:
            return m[n]
        res = 0
        k = n
        while n:
            res += n%10
            n //= 10
        m[n] = k/res
        return m[n]
    k = I()
    ans = []
    d = 1
    l = [i for i in range(100)]
    while len(ans) < k:
        n = d-1
        for i in range(100):
            x = n+d*i
            if not x:continue
            if s(x) <= s(x+d):
                ans.append(x)
        d *= 100
    for i in ans[:k]:
        print(i)
    return

#E
def E():
    return

#F
def F():
    return

#G
def G():
    return

#H
def H():
    return

#Solve
if __name__ == "__main__":
    D()
