전화번호
시간 제한2초메모리 제한512 MB
하이픈으로 적힌 전화번호를 1부터 999999999 사이의 수로 다시 나누어, 러시아어로 똑같이 읽히는 전화번호를 모두 찾습니다.
문제
Vasya는 얼마 전 전화로 전화번호를 불러 받았다. 그는 숫자를 하이픈으로 구분해 번호를 적었지만, 제대로 옮겨 적었는지 의심하기 시작했다. 서로 다른 전화번호인데도 같은 방식으로 읽히는 경우가 있기 때문이다. 예를 들어 "3000-100-1", "3000-101", "3100-1", "3101" 네 번호는 모두 "три тысячи сто один"(삼천백일)로 읽힌다. Vasya는 자기가 적은 번호와 똉 같은 방식으로 읽히는 전화번호를 모두 찾고 싶어 한다.
Vasya는 전화번호를 읽을 때 아홉 자리를 넘는 수는 쓰이지 않는다고 생각한다. 1부터 까지의 수는 다음과 같이 읽는다.
수가 이상이면 먼저 백만 단위의 수를 남성형으로 읽고, 이어서 "миллион", "миллиона", "миллионов" 중 하나를 붙인다. 백만 단위 수를 100으로 나눈 나머지가 11이 아니고 10으로 나눈 나머지가 1이면 "миллион"을 쓴다. 100으로 나눈 나머지가 12, 13, 14가 아니고 10으로 나눈 나머지가 2, 3, 4이면 "миллиона"를 쓴다. 그 외에는 "миллионов"를 쓴다.
수를 으로 나눈 나머지가 이상이면 다음으로 천 단위의 수를 여성형으로 읽고, 이어서 "тысяча", "тысячи", "тысяч" 중 하나를 붙인다. 천 단위 수를 100으로 나눈 나머지가 11이 아니고 10으로 나눈 나머지가 1이면 "тысяча"를 쓴다. 100으로 나눈 나머지가 12, 13, 14가 아니고 10으로 나눈 나머지가 2, 3, 4이면 "тысячи"를 쓴다. 그 외에는 "тысяч"를 쓴다.
마지막으로 수를 으로 나눈 나머지가 0이 아니면 그 나머지 수를 남성형으로 읽는다.
예를 들어 는 "девятьсот семьдесят восемь миллионов сто двадцать одна тысяча четырнадцать"로 읽고, 는 "один миллион сто сорок два"로 읽는다. "миллион" 앞의 "один"은 생략할 수 없고, "тысяча" 앞의 "одна"도 생략할 수 없다. 11부터 19까지의 수는 한 단어로 읽는다.
입력
입력은 Vasya가 적은 전화번호가 적힌 한 줄이다. 번호는 양의 정수를 하이픈으로 이어 쓴 것이다. 각 정수는 최대 아홉 자리이며 앞에 0이 붙지 않는다. Vasya가 적은 번호에 나오는 숫자는 최대 50개이다.
출력
첫 줄에는 Vasya가 적은 번호와 같은 방식으로 읽히는 전화번호의 개수를 출력한다. 다음 줄부터 그 전화번호를 한 줄에 하나씩 출력한다. 각 번호는 1부터 까지의 정수를 하이픈으로 이은 것이어야 한다. 출력 순서는 상관없다. 답에 나오는 번호의 개수는 을 넘지 않는다. 답에 포함된 번호는 숫자가 50개를 넘을 수도 있다.