OLIMPIC
  • Олимпийский игры
    OLIMPIC GAMES


Описание
Кухарка в Герцогиню метнула: банку, склянку, вилку, ложку и неочищенную картошку. Вилку она метнула позже банки, но не позже склянки, ложку - раньше склянки, но не раньше банки. Восстановите последовательность брошенных предметов, если неочищенная картошка предшествовала ложке и была пущена вслед за вилкой. 

Решить эту задачу устно не представляет труда. Вот искомая последовательность метания: банка, вилка, неочищенная картошка, ложка, склянка. Вам предлагается научить компьютер решать подобные задачи.

Условимся задавать имена брошенных предметов последовательностью строчных латинских букв не длиннее 100 символов. Порядок метания будем задавать английскими словами: later (позднее), earlier (раньше), before (перед), after (вслед).

Later и earlier означают не только непосредственное предшествование или отставание. Перед этими словами может стоять отрицание not. Оно изменяет смысл слова на противоположный. Например:
  not later = earlier,
  not earlier = later.

a
before b означает, что предмет a непосредственно предшествует предмету b
a after b означает, что предмет a был брошен сразу за предметом b

Из имен предметов и порядковых слов образуются высказывания. Высказывание имеет следующую структуру: 
<имя предмета> <порядковое слово> <имя предмета>

Каждое высказывание задается в отдельной строке входного файла. Элементы высказывания разделяются одним пробелом. Например, если предметам исходной задачи присвоить имена: ba - банка, sk - склянка, vi - вилка, lo - ложка и ka - неочищенная картошка, то высказывания о порядке метания примут вид:
vi  later  ba
vi  not later  sk
lo  earlier  sk
lo  not earlier  ba
ka  before  lo
ka  after  vi

Задание
Требуется написать программу, которая по списку высказываний определит порядок метания, если порядков несколько, то любой, или укажет, что решений не существует.

Технические условия

Исходный файл: OLIMPIC
Входной файл: OLIMPIC.IN
Выходной файл: OLIMPIC.OUT

Входные данные
Формат входного файла:
В каждой строке входного файла записано одно высказывание в соответствии с изложенными выше правилами. Всего высказываний не более 130.

Выходные данные
Выходной файл содержит одну строку с порядком метания предметов, удовлетворяющим всем высказываниям. Имена предметов разделяются одним пробелом. После последнего имени пробел отсутствует. 

Если порядков может быть несколько, то выводится любой из них. Если решения нет, то выводится "No solution".

Пример:

OLIMPIC.IN
vi  later  ba
vi  not later  sk
lo  earlier  sk
lo  not earlier  ba
ka  before  lo
ka  after  vi 

OLIMPIC.OUT
ba  vi  ka  lo  sk