Задача C. Телефонный номер

Автор:Жюри ВКОШП-2011 | Автор задачи: Михаил Дворкин, Автор условия: Евгений Курпилянский   Ограничение времени:2 сек
Входной файл:hear.in   Ограничение памяти:256 Мб
Выходной файл:hear.out  

Условие

Недавно Васе продиктовали номер телефона. Он записал его, разделив числа дефисами, но потом начал сомневаться, не ошибся ли он в записи номера. Ведь бывают различные телефонные номера, которые произносятся одинаково. Например, все четыре номера "3000-100-1", "3000-101", "3100-1", "3101" читаются как "три тысячи сто один". Теперь он хочет выяснить, какие номера произносятся также, как и записанный им номер.

Вася считает, что при произношении телефонного номера не употребляются числа, состоящие более чем из девяти цифр. Напомним, как произносятся числа от 1 до 999 999 999.

Если число больше или равно 1 000 000, то сначала произносится число миллионов в мужском роде, затем слово "миллион", "миллиона" или "миллионов", по следующим правилам. Если число миллионов, взятое по модулю 100, не равно 11 и дает остаток 1 по модулю 10, то произносится слово "миллион". Если число миллионов, взятое по модулю 100, не равно 12, 13 или 14 и дает остаток 2, 3 или 4 по модулю 10, то произносится слово "миллиона". Иначе произносится слово "миллионов".

Если число по модулю 1 000 000 больше или равно 1 000, то затем произносится число тысяч в женском роде, затем слово "тысяча", "тысячи" или "тысяч", по следующим правилам. Если число тысяч, взятое по модулю 100, не равно 11 и дает остаток 1 по модулю 10, то произносится слово "тысяча". Если число тысяч, взятое по модулю 100, не равно 12, 13 или 14 и дает остаток 2, 3 или 4 по модулю 10, то произносится слово "тысячи". Иначе произносится слово "тысяч".

Затем, если число по модулю 1 000 отлично от нуля, в мужском роде произносится число единиц.

Например, число 978 121 014 произносится как "девятьсот семьдесят восемь миллионов сто двадцать одна тысяча четырнадцать", а число 1 000 142 как "один миллион сто сорок два". Заметим, что перед словом "миллион" нельзя опускать слово "один", перед словом "тысяча" слово "одна", а числа от 11 до 19 произносятся одним словом.

Помогите Васе найти все телефонные номера, которые произносятся так же, как тот, который он записал.

Формат входного файла

На входе единственная строка, содержащая номер записанного Васей телефона. Номер телефона — это целые числа, разделенные символом "-" (ASCII код 39). Каждое число в записи положительно, содержит не более девяти цифр и не содержит ведущих нулей. Гарантируется, что в записанном Васей номере встречается не больше 50 цифр.

Формат выходного файла

В первой строке выведите количество телефонных номеров, которые читаются так же, как и записанный Васей номер. В следующих строках выведите эти номера телефонов. Каждый номер должен находиться в отдельной строке. Каждый номер должен состоять из чисел от 1 до 999 999 999, разделенных дефисами.

Порядок телефонов в ответе не важен. Гарантируется, что количество номеров в ответе не превышает 100 000. Учтите, что в ответе могут встречаться и номера, составленные более чем из 50 цифр.

Примеры тестов

Входной файл (hear.in) Выходной файл (hear.out)
1
3000-101
4
3000-100-1
3000-101
3100-1
3101

0.035s 0.007s 15