Олимпиадный тренинг

Задача . F. Потерянный массив


Мои orz-дети, мы можем оптимизировать эту задачу с \(O(S^3)\) до \(O\left(T^\frac{5}{9}\right)\)!
— Spyofgame, основатель религии Orz

Давным-давно Spyofgame изобрел известный массив \(a\) (элементы которого нумеруются с \(1\)) длины \(n\), который содержал знания о мире и о жизни. После этого он превратил его в матрицу \(b\) (элементы которой нумеруются с \(0\)) размера \((n + 1) \times (n + 1)\), которая содержала знания о мире, о жизни, и о том, что за их пределами.

Spyofgame превратил \(a\) в \(b\) по следующим правилам.

  • \(b_{i,0} = 0\) при \(0 \leq i \leq n\);
  • \(b_{0,i} = a_{i}\) при \(1 \leq i \leq n\);
  • \(b_{i,j} = b_{i,j-1} \oplus b_{i-1,j}\) при \(1 \leq i, j \leq n\).

Здесь \(\oplus\) обозначает операцию побитового исключающего ИЛИ.

В наши дни археологи нашли знаменитую матрицу \(b\). Однако многие ее элементы утеряны. Удалось прочесть лишь значения \(b_{i,n}\) для всех \(1 \leq i \leq n\) (обратите внимание, это некоторые элементы последнего столбца, а не строки).

Археологи хотят восстановить возможный массив \(a\). Можете помочь им найти любой массив, который может быть массивом \(a\)?

Входные данные

Первая строка содержит одно целое число \(n\) (\(1 \leq n \leq 5 \cdot 10^5\)).

Вторая строка содержит \(n\) целых чисел \(b_{1,n}, b_{2,n}, \ldots, b_{n,n}\) (\(0 \leq b_{i,n} < 2^{30}\)).

Выходные данные

Если какой-то массив \(a\) подходит под данную информацию, выведите строку, содержащую \(n\) целых чисел \(a_1, a_2, \ldots, a_n\). Если существуют несколько решений, выведите любое из них.

Если решения не существует, выведите одно целое число \(-1\).

Примечание

Если \(a = [1,2,3]\), то \(b\) будет следующей:

\(\bf{0}\)\(\bf{1}\)\(\bf{2}\)\(\bf{3}\)
\(\bf{0}\)\(1\)\(3\)\(0\)
\(\bf{0}\)\(1\)\(2\)\(2\)
\(\bf{0}\)\(1\)\(3\)\(1\)

Значения \(b_{1,n}, b_{2,n}, \ldots, b_{n,n}\) равны \([0,2,1]\), что соответствует найденной археологами информации.


Примеры
Входные данныеВыходные данные
1 3
0 2 1
1 2 3
2 1
199633
199633
3 10
346484077 532933626 858787727 369947090 299437981 416813461 865836801 141384800 157794568 691345607
725081944 922153789 481174947 427448285 516570428 509717938 855104873 280317429 281091129 1050390365

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя