Динамические структуры данных

Формат входных данных.
Ввод: Сведения
предметного указателя, по одному слову на строку по формату:
<Слово> <Список
страниц через пробел, где оно упоминается >,
0 - признак конца ввода списка, затем список
слов, по одному на строку, страницы с упоминаниями
которых надо вывести, 0 –признак конца ввода списка.
Вывод: Сначала
содержание предметного указателя в алфавитном порядке слов, затем, через пустую
строку, вывод сведений о запрошенных словах
в порядке их запросов.
Пример входных данных:
Page 10 34 45 56 67 78 99
Book 24 6 89 98 99
Lake 34 45 56 77 88 99
Cake 11 23 24 25 26 27 28 78 79 89
Moon 45
Sun 66 68 79
Earth 32 34 54 65 76 88
Pen 21 31 42 52
Yard 33 43 54 65 76
Garden 22 33 44 55 66
0
Lake
Book
0
Пример выходных данных:
Book 24 6 89 98 99
Cake 11 23 24 25 26 27 28 78 79 89
Earth 32 34 54 65 76 88
Garden 22 33 44 55 66
Lake 34 45 56 77 88 99
Moon 45
Page 10 34 45 56 67 78 99
Pen 21 31 42 52
Sun 66 68 79
Yard 33 43 54 65 76
Lake 34 45 56 77 88 99
Book 24 6 89 98 99