# -*- coding: utf-8 -*-
"""
３の倍数と３のつく数字でアホになる（プログラム）
"""
# これは，難易度３を達成するプログラムのソースコードです．


# いずれかの桁に３が含まれているか確認
def has3(i):
    # 整数の桁がなくなるまで繰り返す
    while i > 0:
        # 一の位が３ならTrue
        if (i % 10) == 3:
            return True
        
        # そうでなければ10で割って桁をずらす
        i //= 10
    
    # 全ての桁に３が含まれていなければFalse
    return False


def hiragana(i):
    keta_hira = [[""], ["じゅう"], ["ひゃく", "びゃく", "ぴゃく"], ["せん", "ぜん"], ["まん"], ["おく"], ["ちょう"]]
    kazu_hira = [[""], ["いち", "", "いっ"], ["に"], ["さん"], ["よん"], ["ご"], ["ろく", "ろっ"], ["なな"], ["はち", "はっ"], ["きゅう"]]
    hira_str  = ""
    keta_num  = 0
    kazu_opt  = 0

    if i >= 10000:
        return hiragana(i//10000) + keta_hira[4][0] + hiragana(i%10000)

    while i > 0:
        kazu_num = i % 10
        if   (kazu_num == 1) and (1 <= keta_num <= 3):
            keta_opt = 0
            kazu_opt = 1 + (keta_num == 3)
        elif (kazu_num == 3) and ((keta_num == 2) or (keta_num == 3)):
            keta_opt = 1
            kazu_opt = 0
        elif ((kazu_num == 6) or (kazu_num == 8)) and (keta_num == 2):
            keta_opt = 2
            kazu_opt = 1
        else:
            keta_opt = 0
            kazu_opt = 0
        
        if kazu_num > 0:
            hira_str = kazu_hira[kazu_num][kazu_opt] + keta_hira[keta_num][keta_opt] + hira_str
        i //= 10
        keta_num += 1

    return hira_str

def main():
    num_max = 0  # 数え上げる数

    # 1以上40000以下の整数を入力させる
    while (num_max < 1) or (num_max > 40000000):
        num_max = int(input("正の整数（最大４千万）："))
        print()  # 採点の都合上の空行
    
    for i in range(1, num_max+1):
        # ３の倍数か，いずれかの桁に３が含まれていれば「アホ」
        if ((i % 3) == 0) or has3(i):
            print(hiragana(i))
        else:
            print(i)
    
    input("\nEnterを押してプログラムを完全終了")


if __name__ == "__main__":
    main()
