F. Блоки и сенсоры
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп играет в одну очень известную компьютерную игру (мы не будем упоминать ее имя). Каждый объект в этой игре состоит из трехмерных блоков — кубов $$$1 \times 1 \times 1$$$, ребра которых параллельны осям координат. Эти блоки не подвержены гравитации, поэтому могут находиться в воздухе без всякой опоры. Блоки располагаются в ячейках $$$1 \times 1 \times 1$$$; каждая ячейка либо пуста, либо содержит ровно один блок. Каждая ячейка обозначается своими координатами $$$(x, y, z)$$$ (ячейка с такими координатами — это куб с противоположными вершинами в $$$(x, y, z)$$$ и $$$(x + 1, y + 1, z + 1)$$$) и значением $$$a_{x, y, z}$$$; если ячейка пуста, $$$a_{x, y, z} = 0$$$, иначе $$$a_{x, y, z}$$$ равно типу блока в ячейке (типы блоков — целые числа от $$$1$$$ до $$$2 \cdot 10^5$$$).

Поликарп построил большую структуру из блоков. Эта структура находится внутри прямоугольного параллелепипеда $$$n \times m \times k$$$, содержащего все такие клетки $$$(x, y, z)$$$, что $$$x \in [1, n]$$$, $$$y \in [1, m]$$$ и $$$z \in [1, k]$$$. После построения структуры Поликарп окружил параллелепипед $$$2nm + 2nk + 2mk$$$ сенсорами. Сенсор — специальный блок, который выпускает луч в некотором направлении и показывает тип первого блока, до которого дошел луч (за исключением других сенсоров). Сенсоры, поставленные Поликарпом, расположены вплотную к границам параллелепипеда; луч каждого сенсора параллелен одной из координатных осей и направлен внутрь параллелепипеда. Более формально, сенсоры можно разделить на $$$6$$$ типов:

  • есть $$$mk$$$ сенсоров первого типа; каждый такой сенсор расположен в $$$(0, y, z)$$$, где $$$y \in [1, m]$$$ и $$$z \in [1, k]$$$, и выпускает луч в положительном направлении оси $$$Ox$$$;
  • есть $$$mk$$$ сенсоров второго типа; каждый такой сенсор расположен в $$$(n + 1, y, z)$$$, где $$$y \in [1, m]$$$ и $$$z \in [1, k]$$$, и выпускает луч в отрицательном направлении оси $$$Ox$$$;
  • есть $$$nk$$$ сенсоров третьего типа; каждый такой сенсор расположен в $$$(x, 0, z)$$$, где $$$x \in [1, n]$$$ и $$$z \in [1, k]$$$, и выпускает луч в положительном направлении оси $$$Oy$$$;
  • есть $$$nk$$$ сенсоров четвертого типа; каждый такой сенсор расположен в $$$(x, m + 1, z)$$$, где $$$x \in [1, n]$$$ и $$$z \in [1, k]$$$, и выпускает луч в отрицательном направлении оси $$$Oy$$$;
  • есть $$$nm$$$ сенсоров пятого типа; каждый такой сенсор расположен в $$$(x, y, 0)$$$, где $$$x \in [1, n]$$$ и $$$y \in [1, m]$$$, и выпускает луч в положительном направлении оси $$$Oz$$$;
  • наконец, есть $$$nm$$$ сенсоров шестого типа; каждый такой сенсор расположен в $$$(x, y, k + 1)$$$, где $$$x \in [1, n]$$$ и $$$y \in [1, m]$$$, и выпускает луч в отрицательном направлении оси $$$Oz$$$.

Поликарп пригласил своего друга Монокарпа поиграть с ним. Естественно, как только Монокарп увидел огромный параллелепипед, окруженный сенсорами, ему стало интересно, что находится внутри. Поликарп решил не сообщать Монокарпу точную форму структуры; вместо этого он предложил Монокарпу догадаться, какая структура построена внутри, по показаниям сенсоров.

После нескольких часов безуспешных попыток угадать, что же находится внутри, Монокарп все еще не хочет сдаваться. Вместо этого он решил попросить помощи. Можете ли вы написать программу, которая проанализирует показания сенсоров и построит любую структуру, которая не противоречит показаниям?

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

В первой строке заданы три целых числа $$$n$$$, $$$m$$$ и $$$k$$$ ($$$1 \le n, m, k \le 2 \cdot 10^5$$$, $$$nmk \le 2 \cdot 10^5$$$) — размеры параллелепипеда.

Затем следуют показания сенсоров. Показания каждого сенсора — это либо $$$0$$$, если луч, выпущенный этим сенсором, достиг противоположного сенсора (между ними нет блоков), либо целое число от $$$1$$$ до $$$2 \cdot 10^5$$$, соответствующее типу первого блока, которого достиг луч. Все показания разделены на $$$6$$$ секций (по одной на каждый тип сенсоров), каждая пара соседних секций разделяется пустой строкой, а также первая секция отделяется от размеров параллелепипеда пустой строкой.

Первая секция состоит из $$$m$$$ строк по $$$k$$$ целых чисел. $$$j$$$-е число в $$$i$$$-й строке соответствует показаниям сенсора, расположенного в $$$(0, i, j)$$$.

Вторая секция состоит из $$$m$$$ строк по $$$k$$$ целых чисел. $$$j$$$-е число в $$$i$$$-й строке соответствует показаниям сенсора, расположенного в $$$(n + 1, i, j)$$$.

Третья секция состоит из $$$n$$$ строк по $$$k$$$ целых чисел. $$$j$$$-е число в $$$i$$$-й строке соответствует показаниям сенсора, расположенного в $$$(i, 0, j)$$$.

Четвертая секция состоит из $$$n$$$ строк по $$$k$$$ целых чисел. $$$j$$$-е число в $$$i$$$-й строке соответствует показаниям сенсора, расположенного в $$$(i, m + 1, j)$$$.

Пятая секция состоит из $$$n$$$ строк по $$$m$$$ целых чисел. $$$j$$$-е число в $$$i$$$-й строке соответствует показаниям сенсора, расположенного в $$$(i, j, 0)$$$.

Наконец, шестая секция состоит из $$$n$$$ строк по $$$m$$$ целых чисел. $$$j$$$-е число в $$$i$$$-й строке соответствует показаниям сенсора, расположенного в $$$(i, j, k + 1)$$$.

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

Если показания сенсоров противоречивы, выведите $$$-1$$$.

Иначе выведите описание структуры внутри параллелепипеда следующим образом. Выходные данные должны содержать $$$nmk$$$ целых чисел: $$$a_{1, 1, 1}$$$, $$$a_{1, 1, 2}$$$, ..., $$$a_{1, 1, k}$$$, $$$a_{1, 2, 1}$$$, ..., $$$a_{1, 2, k}$$$, ..., $$$a_{1, m, k}$$$, $$$a_{2, 1, 1}$$$, ..., $$$a_{n, m, k}$$$, где $$$a_{i, j, k}$$$ — тип блока в $$$(i, j, k)$$$, или $$$0$$$, если эта ячейка пуста. Если существует несколько структур, которым соответствуют показания сенсоров, выведите любую из них.

Для вашего удобства выходные данные в примерах отформатированы: они разделены на $$$n$$$ секций для блоков с $$$x = 1$$$, $$$x = 2$$$, ..., $$$x = n$$$; каждая секция состоит из $$$m$$$ строк по $$$k$$$ чисел. Можно выводить ответ в таком виде, но любой другой формат вывода тоже будет принят; можно, например, вывести все числа на одной строке, важен только их порядок.

Примеры
Входные данные
4 3 2

1 4
3 2
6 5

1 4
3 2
6 7

1 4
1 4
0 0
0 7

6 5
6 5
0 0
0 7

1 3 6
1 3 6
0 0 0
0 0 7

4 3 5
4 2 5
0 0 0
0 0 7
Выходные данные
1 4
3 0
6 5

1 4
3 2
6 5

0 0
0 0
0 0

0 0
0 0
0 7
Входные данные
1 1 1

0

0

0

0

0

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

0

0

1337

0

0

0
Выходные данные
-1
Входные данные
1 1 1

1337

1337

1337

1337

1337

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