말로 읽는 금액

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

전화 은행 시스템이 고객에게 계좌 잔액을 소리로 읽어 준다. 이 시스템이 쓰는 음성 합성 엔진은 숫자를 발음하지 못하므로, 금액을 영어 단어로 모두 풀어 쓴 문장을 미리 받아야 한다.

-$999999999999.99 이상 $999999999999.99 이하의 금액 하나를 영어 단어로 바꾸어라. 아직 조 단위 자산을 가진 고객은 없다.

달러와 센트는 값이 0이어도 항상 적는다. 달러가 0이면 zero dollars를, 센트가 0이면 zero cents를 적는다. 규칙은 다음과 같다.

  • 값이 0인 billions, millions, thousands, units 그룹은 아예 적지 않는다.
  • 21 이상 99 이하이면서 10의 배수가 아닌 수는 십의 자리 단어와 일의 자리 단어를 하이픈 하나로 잇는다. 예를 들어 twenty-one, ninety-nine이다.
  • hundred 뒤에는 항상 and를 적는다. 다만 그 값이 백 단위로 딱 떨어지면 적지 않는다. one hundred thousandone hundred and twenty-three thousand를 비교해 보라.
  • billions, millions, thousands 중 실제로 적힌 가장 작은 그룹과 units 그룹 사이에는, units 그룹이 100 미만이면서 0이 아닐 때 and를 적는다. two thousand and forty-sixtwo thousand five hundred and fifty-seven을 비교해 보라.
  • 달러 금액 뒤에는 dollars를 적는다. 달러 금액이 정확히 1일 때만 dollar를 적는다.
  • 달러 금액과 센트 금액 사이에는 and를 적는다.
  • 센트 금액 뒤에는 cents를 적는다. 센트 금액이 정확히 1일 때만 cent를 적는다.
  • 금액이 음수이면 맨 뒤에 in debit을, 양수이면 맨 뒤에 in credit을 붙인다.
  • 금액이 0이면 in debitin credit도 붙이지 않는다.

필요한 단어의 철자는 zero, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, thirty, forty, fifty, sixty, seventy, eighty, ninety, hundred, thousand, million, billion이 전부다.

입력

첫 줄에 금액 v가 주어진다. 음수 부호(양수면 생략한다), $, 자릿수 구분 기호가 없는 달러 금액, ., 센트를 나타내는 두 자리 숫자 순서로 붙여 쓴다.

달러 금액은 0인 경우를 빼면 맨 앞에 0이 오지 않는다. v는 -999999999999.99 이상 999999999999.99 이하이고, 값이 0이면 음수 부호 없이 $0.00으로 주어진다.

출력

금액을 영어 단어로 바꾸어 한 줄에 출력한다. 단어 사이는 공백 하나로 구분한다.