from math import log
def S(n):
    ans = 0
    while n != 0:
        ans += n % 10 
        n //= 10
    return ans
def get_snuke(n):
    return n / S(n)
def get_snuke2(n):
    return log(n) - log( S(n) ) 

def get_keta(n):
    keta = 0
    while n:
        keta += 1
        n //= 10
    return keta
ans = [1]
from collections import deque
from copy import copy
def nexta(K):
    if K == 1:
        return ans[0]

    listInt= []
    bef = ans[K-2]

    while bef:
        listInt.append(bef % 10)
        bef //= 10

    # bef = list(reverse(bef))
    # for i in range(len(bef)-1, -1, -1):
    for i in range(len(listInt)):
        if listInt[i] != 9:
            break
    
    if i == len(listInt)-1 and listInt[i] == 9:
        # ALL 9 
        action5 = copy(listInt)
        action5.append(1)
        action6 = copy(listInt)
        action6.append(9)
        action1 = action5
        action2 = action5
        action3 = action5
        # action4 = action5
        action4 = copy(listInt)
        # action4[i] = "01"
        action4[i] += 1

    else:
        action1 = copy(listInt)
        action1[i] += 1

        action2 = copy(listInt)
        action2[i] = 9
        
        action3 = copy(listInt)
        action3[i] = 9
        if i == len(listInt) -1 :
            action3.append(1)
        # elif i != len(listInt)-1 and action3[i] == 9:
        #     pass
            

        action4 = copy(listInt)
        action4[i] = 9
        if i == len(listInt) -1 :
            action3.append(9)



        action5 = action1
        action6 = action1
        # elif i != len(listInt)-1 and action3[i] == 9:
        #     pass
    # action1_num = int(

    action1 = list(reversed(action1))
    action1 = list(map(lambda x: str(x), action1))
    action2 = list(reversed(action2))
    action2 = list(map(lambda x: str(x), action2))
    action3 = list(reversed(action3))
    action3 = list(map(lambda x: str(x), action3))
    action4 = list(reversed(action4))
    action4 = list(map(lambda x: str(x), action4))
    action5 = list(reversed(action5))
    action5 = list(map(lambda x: str(x), action5))
    action6 = list(reversed(action6))
    action6 = list(map(lambda x: str(x), action6))

    actions = [action1, action2, action3, action4, action5, action6]
    # print("actions: ", actions)
    minvalue = 10**9
    mini = -1

    for e,act in enumerate(actions):
        if minvalue > get_snuke2(int("".join(act))):
            mini = e
            minvalue = get_snuke2(int("".join(act)))
    # print("mini: ", mini, actions[mini])

    ans.append(int("".join(actions[mini])))# get_snukeactions[mini]

    return 

K = int(input())
for i in range(1,K+1):
    nexta(i)
# print(ans)
print("\n".join(list(map(lambda x: str(x), ans[:K]))))
            

exit(0)
