#include<iostream> #include<string> #include<sstream> using namespace std; string lessThanHundred(int num){ string digitNum[20]={"zero","one","two","three","four","five","six","seven","eight","nine","ten",\ "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"}; string tens[8]={"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; if(num<20) return digitNum[num]; else{ stringstream ss; ss<<num; if(stoi(ss.str().substr(1))==0){ return tens[stoi(ss.str().substr(0,1))-2]; } else{ return tens[stoi(ss.str().substr(0,1))-2] +" "+ digitNum[stoi(ss.str().substr(1))]; } } } string threeBitnum(int num){ string digitNum[9]={"one","two","three","four","five","six","seven","eight","nine"}; if(num<100) return lessThanHundred(num); else if(num%100==0){ return digitNum[num/100-1] + " hundred"; } else{ stringstream ss; ss<<num; return digitNum[stoi(ss.str().substr(0,1))-1] + " hundred and "+lessThanHundred(stoi(ss.str().substr(1,2))); } } string numToEnglish(long num){ stringstream ss; ss<<num; int length=ss.str().size(); if(length<=0 || length>9 || (length>1 && ss.str().substr(0,1)=="0")) return "error"; for(int i=0;i<length;i++){ if(!isdigit(ss.str()[i])) return "error"; } if(length<4) return threeBitnum(num); else if(length>=4 && length<7){ if(num%1000==0){ return threeBitnum(stoi(ss.str().substr(0,length-3)))+" thousand"; } else{ return threeBitnum(stoi(ss.str().substr(0,length-3)))+" thousand "+threeBitnum(stoi(ss.str().substr(length-3))); } } else{ if(num%1000000==0) return threeBitnum(stoi(ss.str().substr(0,length-6)))+" million"; else if(stoi(ss.str().substr(length-6))%1000==0) return threeBitnum(stoi(ss.str().substr(0,length-6)))+" million "+\ threeBitnum(stoi(ss.str().substr(length-6,3)))+" thousand "; else return threeBitnum(stoi(ss.str().substr(0,length-6)))+" million "+\ threeBitnum(stoi(ss.str().substr(length-6,3)))+" thousand "+\ threeBitnum(stoi(ss.str().substr(length-3))); } } int main(){ long num; while(cin>>num) cout<<numToEnglish(num)<<endl; return 0; }