Гравець Автомата Графів
Ви та ваша бабуся граєте з графовими автоматами, які є узагальненням клітинних автоматів.
Графовий автомат представлений графом. Вершини графа мають значення, що змінюється з часом, і може бути або 0, або 1. Між будь-якими двома вершинами може бути не більше одного ребра, але можуть існувати петлі.
Значення вершин змінюються за наступним правилом: У момент часу t+1 значення вершини i буде 1 тоді і тільки тоді, коли існує непарна кількість ребер від вершини i до вершини, яка має значення 1 у момент часу t; інакше 0.
Тепер ваша забудькувата бабуся забула минулі стани автомата. Ваше завдання — написати програму, яка відновлює минулі стани з поточного часу, оскільки машини часу занадто дорогі. Може бути кілька кандидатів або жодного узгодженого стану. У таких випадках ви повинні вивести відповідне повідомлення про помилку.
Вхідні дані
Вхідні дані мають наступний формат:
N
a_11 ... a_1N
...
a_N1 ... a_NN
v_1
...
v_N
T
Перший рядок містить одне ціле число N (2 ≤ N ≤ 300). N вказує на кількість вершин. Наступні N рядків представляють матрицю суміжності графа. Коли (i, j)-елемент дорівнює 1, існує ребро від вершини i до вершини j. Інакше ребра немає. Наступні N рядків вказують на вектор значень вершин. i-й елемент вказує на значення вершини i у момент часу 0. Кожен елемент матриці та вектора може бути 0 або 1. Останній рядок містить одне ціле число T (1 ≤ T ≤ 100000000). −T - це час, на який ваша бабуся хоче знати стан.
Вихідні дані
Виведіть вектор значень у момент часу −T, розділений одним пробілом в одному рядку наступним чином:
v_1 ... v_N
Кожне значення має бути розділене одним пробілом. Якщо немає узгоджених векторів значень, ви повинні вивести none в одному рядку. Або якщо є кілька кандидатів і рішення не є унікальним, ви повинні вивести ambiguous в одному рядку.