one_digit = ["không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"]
ten_unit = {
**{ 0: ("linh", ["", " một", " hai", " ba", " bốn", " năm", " sáu", " bảy", " tám", " chín"]),
1: ("mười", ["", " một", " hai", " ba", " bốn", " lăm", " sáu", " bảy", " tám", " chín"]) },
**{ x: (one_digit[x] + " mươi", ["", " mốt", " hai", " ba", " tư", " lăm", " sáu", " bảy", " tám", " chín"]) for x in range(2, 9+1) }
}
hundreds = [x + " trăm" for x in one_digit]
bigger = ["", " nghìn", " triệu", " tỉ", " nghìn tỉ", " triệu tỉ", " tỉ tỉ"]
def read_class(s):
n = int(s)
if len(s) == 1:
return one_digit[n]
elif len(s) == 2:
u = ten_unit[n//10]
return u[0] + u[1][n%10]
else: # len(s) == 3
if s == '000':
return ''
elif s.endswith('00'): # x00
return hundreds[n//100]
else: # xyz
u = ten_unit[(n//10)%10]
return hundreds[n//100] + ' ' + u[0] + u[1][n%10]
while True:
try:
s = input()
except:
break
s = s.lstrip('0').rstrip('\n')
classes = []
for i in range(len(s)-1, 1, -3):
classes.append(s[i-2:i+1])
if len(s) % 3 != 0:
classes.append(s[:len(s)%3])
res = ''
for i in range(len(classes)):
named_class = read_class(classes[i])
if named_class != '':
res = named_class + bigger[i] + (' ' * (res != '')) + res
print(s, res)
b25lX2RpZ2l0ID0gWyJraMO0bmciLCAibeG7mXQiLCAiaGFpIiwgImJhIiwgImLhu5FuIiwgIm7Eg20iLCAic8OhdSIsICJi4bqjeSIsICJ0w6FtIiwgImNow61uIl0KdGVuX3VuaXQgPSB7CgkqKnsgMDogKCJsaW5oIiwgWyIiLCAiIG3hu5l0IiwgIiBoYWkiLCAiIGJhIiwgIiBi4buRbiIsICIgbsSDbSIsICIgc8OhdSIsICIgYuG6o3kiLCAiIHTDoW0iLCAiIGNow61uIl0pLAogICAgICAgICAgICAgICAgMTogKCJtxrDhu51pIiwgWyIiLCAiIG3hu5l0IiwgIiBoYWkiLCAiIGJhIiwgIiBi4buRbiIsICIgbMSDbSIsICIgc8OhdSIsICIgYuG6o3kiLCAiIHTDoW0iLCAiIGNow61uIl0pIH0sCiAgICAgICAgICAgICoqeyB4OiAob25lX2RpZ2l0W3hdICsgIiBtxrDGoWkiLCBbIiIsICIgbeG7kXQiLCAiIGhhaSIsICIgYmEiLCAiIHTGsCIsICIgbMSDbSIsICIgc8OhdSIsICIgYuG6o3kiLCAiIHTDoW0iLCAiIGNow61uIl0pIGZvciB4IGluIHJhbmdlKDIsIDkrMSkgfQogICAgICAgICAgIH0KCmh1bmRyZWRzID0gW3ggKyAiIHRyxINtIiBmb3IgeCBpbiBvbmVfZGlnaXRdCmJpZ2dlciA9IFsiIiwgIiBuZ2jDrG4iLCAiIHRyaeG7h3UiLCAiIHThu4kiLCAiIG5naMOsbiB04buJIiwgIiB0cmnhu4d1IHThu4kiLCAiIHThu4kgdOG7iSJdCgoKZGVmIHJlYWRfY2xhc3Mocyk6CgluID0gaW50KHMpCglpZiBsZW4ocykgPT0gMToKCQlyZXR1cm4gb25lX2RpZ2l0W25dCgllbGlmIGxlbihzKSA9PSAyOgoJCXUgPSB0ZW5fdW5pdFtuLy8xMF0KCQlyZXR1cm4gdVswXSArIHVbMV1bbiUxMF0KCWVsc2U6ICAjIGxlbihzKSA9PSAzCgkJaWYgcyA9PSAnMDAwJzoKCQkJcmV0dXJuICcnCgkJZWxpZiBzLmVuZHN3aXRoKCcwMCcpOiAgIyB4MDAKCQkJcmV0dXJuIGh1bmRyZWRzW24vLzEwMF0KCQllbHNlOiAgIyB4eXoKCQkJdSA9IHRlbl91bml0WyhuLy8xMCklMTBdCgkJCXJldHVybiBodW5kcmVkc1tuLy8xMDBdICsgJyAnICsgdVswXSArIHVbMV1bbiUxMF0KCgp3aGlsZSBUcnVlOgoJdHJ5OgoJCXMgPSBpbnB1dCgpCglleGNlcHQ6CgkJYnJlYWsKCglzID0gcy5sc3RyaXAoJzAnKS5yc3RyaXAoJ1xuJykKCWNsYXNzZXMgPSBbXQoJZm9yIGkgaW4gcmFuZ2UobGVuKHMpLTEsIDEsIC0zKToKCQljbGFzc2VzLmFwcGVuZChzW2ktMjppKzFdKQoJCglpZiBsZW4ocykgJSAzICE9IDA6CgkJY2xhc3Nlcy5hcHBlbmQoc1s6bGVuKHMpJTNdKQoJCglyZXMgPSAnJwoJZm9yIGkgaW4gcmFuZ2UobGVuKGNsYXNzZXMpKToKCQluYW1lZF9jbGFzcyA9IHJlYWRfY2xhc3MoY2xhc3Nlc1tpXSkKCQlpZiBuYW1lZF9jbGFzcyAhPSAnJzoKCQkJcmVzID0gbmFtZWRfY2xhc3MgKyBiaWdnZXJbaV0gKyAoJyAnICogKHJlcyAhPSAnJykpICsgcmVzCgkKCXByaW50KHMsIHJlcykK