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

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

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

Внутри адронного коллайдера образовалось 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 секунда
Лимит использования памяти 64 MiB
Входные данные #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