В Саус-Парке было раннее зимнее утро. Взрослые привычно спешили на работу, а дети — в школу. Закадычные друзья Стэн, Кайл, Кенни и Эрик стояли на остановке и ждали школьный автобус. День обещал быть длинным и скучным.
Однако в школе ребят ждала встреча с необычным человеком. Всё началось с того, что школьный психолог собрал всех детей в спортзале и объявил: «Так, дети! Внимание! Сегодня в гостях у нас важная персона. Кто назовёт мне имя нашего предпоследнего вице-президента?»
Конечно же, никто из детей не знал, что этого человека звали Эл Гор. И, как выяснилось чуть позже, возможно, и к лучшему.
Он вышел на трибуну и сказал следующее: «Спасибо, Мистер Маки, здравствуй,
начальная школа Саус-Парка. Я хочу рассказать о самой страшной угрозе для нашей планеты. Она может положить конец человеческой расе. Я говорю о челмедведосвине. Это создание в одиночку наводит страх на Землю. Это наполовину человек, наполовину медведь, наполовину свинья. Многие считают, что челмедведосвина не существует, но уверяю вас, что он существует. Я серьёзно. Ему безразлично, кто вы и чем занимаетесь. Он хочет до вас добраться. Но не бойтесь, потому что я вас спасу. И когда-нибудь потом, когда мир будет свободен от челмедведосвина, все скажут мне спасибо».
Конечно же, никто не придал значения его словам. Все просто пожали плечами и разошлись на уроки. Но вечером Эрик вдруг понял, что Эл Гор сказал полнейшую чепуху.
Сами посудите, как может быть в одном существе три половины других? Эрик сказал это Кенни, но тот лишь отмахнулся, сказав, что Эл Гор подразумевал по трети каждого из животных. Но Эрик был прав. Действительно, не существует такой родословной, чтобы в челмедведосвине было поровну свиньи, медведя и человека.
Родословная существа — это последовательность скрещиваний существ,
приводящая к его появлению. В результате скрещивания существа A и существа B образуется новое существо, наполовину состоящее из A и B.
Если в существе A было a процентов некоторого животного, а в существе B — b процентов этого же животного, то в получившемся при их скрещивании существе будет (a + b) / 2 процентов данного животного.
Теперь Эрик хочет научиться составлять возможную родословную существа по данным о
том, из каких животных и в каких соотношениях оно состоит.
Исходные данные
Первая строка содержит название существа. Название состоит из строчных латинских букв и дефисов и имеет длину от 1 до 200. Дефисы отделяют друг от друга непустые названия
животных. Каждое животное встречается в названии существа не более одного раза. Существо состоит не менее чем из одного и не более чем из десяти различных животных.
Во второй строке через пробел записаны дроби вида a/b
(1 ≤ a ≤ b ≤ 1500), i-я дробь в этом списке указывает, какую часть существа составляет i-е животное в его названии.
Сумма всех дробей равна единице.
Результат
Выведите родословную существа в виде последовательного описания того, каким образом появились на свет его предки и оно само. В первой строке выведите число n — количество строк в родословной (1 ≤ n ≤ 10000). Далее выведите n − 1 строку, k-я из которых должна содержать описание того, что из себя представляет k-й предок существа. Если k-й предок является животным,
то строка должна содержать только название этого животного. Если же он был получен скрещиванием двух ранее описанных предков, то строка должна содержать пару целых чисел в диапазоне от 1 до k − 1 — номера строк родословной, в которых описаны эти предки. В последней строке выведите в том же формате, каким образом появилось на свет существо, описанное во входных данных. Все описанные предки существа должны участвовать хотя бы в одном скрещивании. Если возможных родословных несколько, выведите любую из них. Если требуемую родословную построить нельзя, выведите строку «No solution».
Примеры
исходные данные | результат |
---|
man-bear-pig
1/2 1/4 1/4
| 7
man
pig
1 2
bear
man
4 5
3 6 |
man
1/1 | 1
man |
man-bear-pig
1/3 1/3 1/3 | No solution |
Автор задачи: Фёдор Фоминых (подготовка — Иван Бурмистров)
Источник задачи: Уральская региональная командная олимпиада по программированию 2009