Дерево Рядків
Натан О. Девіс керує електронною системою обміну повідомленнями під назвою JAG-channel. Наразі він стикається з труднощами при додаванні нової функції - перегляду у вигляді дерева.
Як і багато інших систем обміну повідомленнями, JAG-channel організований за темами. Тут тема (також відома як топік) відноситься до однієї розмови з колекцією повідомлень. Кожне повідомлення може бути початковим, яке ініціює нову тему, або відповіддю на попереднє повідомлення в існуючій темі.
Перегляд у вигляді дерева - це спосіб відображення логічної структури відповідей серед повідомлень: кожне повідомлення формує вузол дерева і містить свої відповіді як підвузли в хронологічному порядку (тобто старіші відповіді передують новішим). Зверніть увагу, що повідомлення разом зі своїми прямими та непрямими відповідями формує піддерево в цілому.
Розглянемо приклад. Припустимо: користувач створив початкове повідомлення з текстом hoge; інший користувач відповів на нього з fuga; ще один користувач також відповів на початкове повідомлення з piyo; хтось інший відповів на друге повідомлення (тобто fuga) з foobar; і п'ятий користувач відповів на те ж повідомлення з jagjag. Дерево цієї теми виглядало б так:
hoge
├─fuga
│ ├─foobar
│ └─jagjag
└─piyo
Для спрощення реалізації Натан розглядає простіший формат: глибина кожного повідомлення від початкового повідомлення представлена крапками. Кожна відповідь отримує на одну крапку більше, ніж її батьківське повідомлення. Дерево вищезгаданої теми тоді виглядало б так:
hoge
.fuga
..foobar
..jagjag
.piyo
Ваше завдання в цій задачі - допомогти Натану, написавши програму, яка виводить дерево у форматі Натана для даних повідомлень в одній темі.
Вхідні дані
Вхід містить один набір даних у наступному форматі:
n
k_1
M_1
k_2
M_2
...
k_n
M_n
Перший рядок містить ціле число n (1 ≤ n ≤ 1000), яке є кількістю повідомлень у темі. Потім слідують 2n рядків. Кожне повідомлення представлене двома рядками: перший рядок містить ціле число k_i (k_1 = 0, 1 ≤ k_i < i для 2 ≤ i ≤ n) і вказує, що i-те повідомлення є відповіддю на k_i-те повідомлення; другий рядок містить рядок M_i і представляє текст i-го повідомлення. k_1 завжди дорівнює 0, що означає, що перше повідомлення не відповідає на жодне інше повідомлення, тобто є початковим повідомленням.
Кожне повідомлення містить від 1 до 50 символів, що складаються з великих, малих літер та цифр.
Вихідні дані
Виведіть дані n повідомлень, як зазначено в умові задачі.