Яхубу не нравятся лирические отступления, так что он прямо скажет, что от Ваc требуется в данной задаче.
Дана матрица a, состоящая из n строк и n столбцов. Изначально все элементы в матрице равны 0. Как строки, так и столбцы матрицы 1-индексированные, то есть, строки нумеруются числами 1, 2, ..., n, и столбцы нумеруются числами 1, 2, ..., n. Обозначим элемент матрицы, который стоит на пересечении i-ой строки и j-ого столбца, как ai, j.
Будем называть подматрицей (x0, y0, x1, y1) элементы матрицы ai, j, такие, что выполняются два неравенства: x0 ≤ i ≤ x1, y0 ≤ j ≤ y1.
Напишите программу, которая выполняет операции двух следующих типов:
- Query(x0, y0, x1, y1): вывести xor всех элементов подматрицы (x0, y0, x1, y1).
- Update(x0, y0, x1, y1, v): каждый элемент подматрицы (x0, y0, x1, y1) xor-ится со значением v, то есть элемент подматрицы b заменяется на b xor v.
Выходные данные
Для каждой операции query выведите результат в отдельной строке.
Примечание
После первых 3-x операций, матрица будет выглядеть следующим образом:
1 1 2
1 1 2
3 3 3
Чтобы выполнить четвертую операцию нужно посчитать 1 xor 2 xor 3 xor 3 = 3.
Чтобы выполнить пятую операцию нужно посчитать 1 xor 3 = 2.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
3 5 2 1 1 2 2 1 2 1 3 2 3 2 2 3 1 3 3 3 1 2 2 3 3 1 2 2 3 2
|
3
2
|