eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Адронний коллайдер

Адронний коллайдер

Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB

Всередині адронного коллайдера утворилось N різновидностей нових частинок у кількості A\[1\], … , A\[N\] одиниць кожна. Більша частина нових частинок, проте, вспіває прореагувати між собою раніше, ніж ці частинки зможе вловити детектор, тому фізикам дуже важливо передбачити кінцевий результат реакції між частинками.

Для простоти будемо вважати, що в реакції приймає участь 2 частинки, з одним із наступних результатів, в залежності від от типу:

  • Перша частинка знищує другу

  • Обидві частинки взаємно знищуються

  • Частинки відскакують одна від одної без будь-якої шкоди

Необхідно визначити всі можливі результати експерименту.

Вхідні дані

Кожен тест описується набором чисел: пеше число задає кількість видів частинок N (1 ≤ N ≤ 4). У наступному рядку N чисел визначають початкову кількість частинок кожного типу A\[i\] (1 ≤ A\[i\] ≤ 2). Наступні N рядків форують матрицю A\[N\]\[N\]. Ненульове значення комірки А\[ij\] вказує, що частинка типу i при зіткненні знищує частинку типу j. Далі починається опис наступного тесту. Тест з N = 0 означає закінчення вхідних даних.

Вихідні дані

Перший рядок є заголовком наступного виду TEST n: (Де n номер тесту, нумерація починається з 1). Наступні рядки містять різні результати експерименту, один варіант експерименту в окремому рядку по N чисел.

Приклад

Вхідні дані #1
3
1 1 2
0 0 1
1 0 0
1 1 1
1
2
0
0
Вихідні дані #1
TEST 1:
0 1 0
0 0 1
1 0 0
TEST 2:
2