Подарунок Леді
На свій день народження Леді отримала подарунок — мережу. Мережа містить вузлів, пронумерованих цілими числами від до . На кожному вузлі записана певна літера, для вузла з номером позначимо цю літеру як .
Між деякими парами вузлів є односторонні зв'язки. З кожного вузла виходить рівно один односторонній зв'язок. Нехай для вузла з номером такий зв'язок веде у вузол з номером . Зауважте, що може бути рівним — у такому випадку вважається, що зв'язок з вузла з номером веде в цей самий вузол.
Нехай та . Тобто — номер вузла, у якому опиниться фішка, якщо її помістити у вузол з номером та разів перенести її по зв'язку з поточного вузла.
Леді створила матрицю розміру , де . Тобто -й рядок матриці це послідовність з літер, де перша літера дорівнює , друга літера — , третя — , і так далі...
Леді повідомила деякі рядки матриці та просить Вас побудувати будь-яку мережу, що відповідає відомим рядкам матриці .
Вхідні дані
У першому рядку задано одне ціле число — кількість вузлів мережі.
У наступних рядках задано опис матриці . У кожному з рядків задано маленьких літер латинського алфавіту, що позначають відповідний рядок матриці , або один символ «?
», якщо відповідний рядок Леді не повідомила.
Гарантується, що існує хоча б одна мережа, яка відповідає заданим умовам.
Вихідні дані
У першому рядку виведіть рядок з маленьких літер латинського алфавіту — літери записані на вузлах мережі.
У другому рядку виведіть цілих чисел — номери вузлів, у які ведуть зв'язки з відповідних вузлів.
Матриця, яка відповідає цій мережі має бути рівною матриці в усіх рядках, які повідомила Леді.
Якщо існує кілька правильних відповідей, дозволяється вивести будь-яку з них.
Приклади
Примітка
У першому прикладі і , тому . Через те, що , усі для теж дорівнюють . Відповідно друга літера першого рядка дорівнює , а третя — .
Знизу зображенні мережі з прикладів. Числа в кутку позначають номери вузлів, літери позначають записані на відповідних вузлах значення, а стрілки — односторонні зв'язки.
Мережа з першого прикладу
Мережа з другого прикладу
Оцінювання
Нехай — кількість рядків, які Леді не повідомила.
Назвемо мережу набором пар та одиничних вузлів, якщо мережу можна розбити на вузли, з яких зв'язок веде у самих себе (тобто ), та на пари вузлів таких, що та .
Назвемо мережу набором зірок, якщо мережу можна розбити на окремі «зірки», кожна з яких складається з головного вузла , з якого зв'язок веде у самого себе (тобто ), та набору другорядних вузлів такого, що для . Зауважте, що зірки в мережі можуть мати різні розміри та складатися лише з одного головного вузла.
Назвемо мережу деревом з коренем у вузлі , якщо з вузла зв'язок веде у самого себе (тобто ), та для кожного іншого вузла можливо потрапити до вузла , використовуючи зв'язки мережі (тобто для кожного існує таке , що ).
Назвемо мережу циклом, якщо почавши у будь-якому вузлі можливо потрапити до будь-якого іншого вузла, використовуючи зв'язки мережі (тобто для усіх існує таке , що ).
( балів): , ;
( балів): , , для (мережа є набором пар та одиничних вузлів);
( балів): , , для (мережа є набором зірок);
( балів): , , та для (мережа є деревом з коренем у вузлі );
( балів): , , для усіх існує таке , що (мережа є циклом);
( балів): , ;
( балів): ;
( балів): , ;
( балів): без додаткових обмежень.