Дискове дерево
Хакер Білл випадково втратив усю інформацію з жорсткого диску своєї робочої станції, і у нього немає резервних копій даних. Він не жалкує про втрату самих файлів, проте у нього була дуже добра і зручна структура каталогів, яку він створював і доглядав за багато років роботи.
На щастя, у Білла є декілька копій каталогів зі свого жорсткого диску. Використовуючи ці списки він зміг відновити повні шляхи (як наприклад WINNT\SYSTEM32\CERTSRV\CERTCO~1\X86
) для деяких директорій. Він виклав їх усі у файл, записавши кожен знайдений шлях у окремому рядку.
Напишіть програму, яка допоможе Біллу відновити прекрасну структуру його директорій шляхом створення відформатованого дерева каталогів.
Вхідні дані
Перший рядок містить одне ціле число - кількість різних шляхів каталогів. Наступні N рядків містять шляхи до каталогів. Кожен шлях до каталогу знаходиться у окремому рядку і не містить пропусків - ні передуючих, ні кінцевих. Довжина шляху не перевищує символів. Кожен шляхь зустрічається один раз і містить імена каталогів, відокремлених зворотним слешем ("\").
Кожне ім'я каталога містить від до великих букв, цифр, або спеціальних символів з наступного списку: знак оклику, знак номера, знак долара, знак процента, амперсанд, апостроф, відкриваюча чи закриваюча дужка, дефіс, комерційне а, зігнутий апостроф, символ підкреслювання, наголос, відкриваюча чи закриваюча фігурна дужка та тильда ("!#$%'()-@^_' ").
Вихідні дані
Вихідні дані потрібно відформатувати у вигляді дерева каталогів. Кожне ім'я каталога слід виводити у окремому рядку, йому передує кількість пропусків, рівна його глибині у ієерархії каталогів. Підкаталоги слід виводити у лексикографічноум порядку відразу ж після батьківських каталогів. Причому кількість пропусків перед підкаталогом повинна бути на один більше, ніж кількість пропускуів перед батьківським каталогом. Кореневі каталоги не містять перед собою пропусків і також виводяться у лексикографічноум порядку. Для уточнення формату виведення дивіться приклад.