#include <iostream>
#include <vector>
const std::vector<std::string> simple {
"twelve", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
"nineteen"
};
const std::vector<std::string> units {
"oh", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
};
const std::vector<std::string> dozens {
"", "ten", "twenty", "thirty", "fourty", "fifty"
};
std::string to_hours(const std::string& input)
{
return simple[std::stoi(input) % 12];
}
std::string to_minutes(const std::string& input)
{
size_t number = std::stoi(input);
if(number == 0)
return "";
if(1 <= number && number < simple.size())
return 1 <= number && number <= 9 ? "oh " + simple[number] : simple[number];
std::string result = dozens[input[0] - '0'];
if(input[1] != '0')
result += " " + units[input[1] - '0'];
return result;
}
int main()
{
std::string line;
while(getline(std::cin, line))
{
size_t colon = line.find(':');
std::string hour = line.substr(0, colon);
std::string minute = line.substr(colon + 1);
std::cout << "It's " << to_hours(hour) << ' ';
std::string minutes = to_minutes(minute);
if(minutes.length())
std::cout << minutes << ' ';
int number = std::stoi(hour);
std::cout << (0 <= number && number <= 11 ? "am" : "pm") << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoJI2luY2x1ZGUgPHZlY3Rvcj4KCgljb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc2ltcGxlIHsKCQkidHdlbHZlIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwgInNpeCIsICJzZXZlbiIsICJlaWdodCIsICJuaW5lIiwKCQkidGVuIiwgImVsZXZlbiIsICJ0d2VsdmUiLCAidGhpcnRlZW4iLCAiZm91cnRlZW4iLCAiZmlmdGVlbiIsICJzaXh0ZWVuIiwgInNldmVudGVlbiIsICJlaWdodGVlbiIsCgkJIm5pbmV0ZWVuIgoJfTsKCgljb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdW5pdHMgewoJCSJvaCIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsICJzaXgiLCAic2V2ZW4iLCAiZWlnaHQiLCAibmluZSIsCgl9OwoKCWNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBkb3plbnMgewoJCSIiLCAidGVuIiwgInR3ZW50eSIsICJ0aGlydHkiLCAiZm91cnR5IiwgImZpZnR5IgoJfTsKCglzdGQ6OnN0cmluZyB0b19ob3Vycyhjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQpCgl7CgkJcmV0dXJuIHNpbXBsZVtzdGQ6OnN0b2koaW5wdXQpICUgMTJdOwoJfQoKCXN0ZDo6c3RyaW5nIHRvX21pbnV0ZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0KQoJewoJCXNpemVfdCBudW1iZXIgPSBzdGQ6OnN0b2koaW5wdXQpOwoJCWlmKG51bWJlciA9PSAwKQoJCQlyZXR1cm4gIiI7CgkJaWYoMSA8PSBudW1iZXIgJiYgbnVtYmVyIDwgc2ltcGxlLnNpemUoKSkKCQkJcmV0dXJuIDEgPD0gbnVtYmVyICYmIG51bWJlciA8PSA5ID8gIm9oICIgKyBzaW1wbGVbbnVtYmVyXSA6IHNpbXBsZVtudW1iZXJdOwoJCXN0ZDo6c3RyaW5nIHJlc3VsdCAgPSBkb3plbnNbaW5wdXRbMF0gLSAnMCddOwoJCWlmKGlucHV0WzFdICE9ICcwJykKCQkJcmVzdWx0ICs9ICIgIiArIHVuaXRzW2lucHV0WzFdIC0gJzAnXTsKCQlyZXR1cm4gcmVzdWx0OwoJfQoKCWludCBtYWluKCkKCXsKCQlzdGQ6OnN0cmluZyBsaW5lOwoJCXdoaWxlKGdldGxpbmUoc3RkOjpjaW4sIGxpbmUpKQoJCXsKCQkJc2l6ZV90IGNvbG9uID0gbGluZS5maW5kKCc6Jyk7CgkJCXN0ZDo6c3RyaW5nIGhvdXIgPSBsaW5lLnN1YnN0cigwLCBjb2xvbik7CgkJCXN0ZDo6c3RyaW5nIG1pbnV0ZSA9IGxpbmUuc3Vic3RyKGNvbG9uICsgMSk7CgoJCQlzdGQ6OmNvdXQgPDwgIkl0J3MgIiA8PCB0b19ob3Vycyhob3VyKSA8PCAnICc7CgkJCXN0ZDo6c3RyaW5nIG1pbnV0ZXMgPSB0b19taW51dGVzKG1pbnV0ZSk7CgkJCWlmKG1pbnV0ZXMubGVuZ3RoKCkpCgkJCQlzdGQ6OmNvdXQgPDwgbWludXRlcyA8PCAnICc7CgkJCWludCBudW1iZXIgPSBzdGQ6OnN0b2koaG91cik7CgkJCXN0ZDo6Y291dCA8PCAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDw9IDExID8gImFtIiA6ICJwbSIpIDw8IHN0ZDo6ZW5kbDsKCQl9Cgl9