Поликарп играет в одну очень известную компьютерную игру (мы не будем упоминать ее имя). Каждый объект в этой игре состоит из трехмерных блоков — кубов $$$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$$$ типов:
Поликарп пригласил своего друга Монокарпа поиграть с ним. Естественно, как только Монокарп увидел огромный параллелепипед, окруженный сенсорами, ему стало интересно, что находится внутри. Поликарп решил не сообщать Монокарпу точную форму структуры; вместо этого он предложил Монокарпу догадаться, какая структура построена внутри, по показаниям сенсоров.
После нескольких часов безуспешных попыток угадать, что же находится внутри, Монокарп все еще не хочет сдаваться. Вместо этого он решил попросить помощи. Можете ли вы написать программу, которая проанализирует показания сенсоров и построит любую структуру, которая не противоречит показаниям?
В первой строке заданы три целых числа $$$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
Название |
---|