← К списку задач

Подделка NFT

Сложность: 27%

По многочисленным просьбам владельцев NFT из браузера убрали кнопку Сохранить как, а из новых клавиатур убрали клавишу Print Screen. Теперь скопировать NFT, увы, невозможно – они стали уникальными невзаимозаменяемыми токенами. Хотя, по сути, всё ещё остаются просто картинками из n×mn \times m пикселей.

Зато Иван нашёл в блокчейне уязвимость, которая позволяет изменить NFT, которым ты владеешь, как угодно переставив пискели в нём. Это открыло потрясающую схему заработка: Иван покупает дешевое NFT, представляющее собой кашу из пикселей, а затем переставляет пиксели так, чтобы оно было похоже на другое, дорогое NFT.

Каждый пиксель в NFT окрашен в какой-то цвет от 11 до 10910^9. Пиксельная разница двух NFT – это сумма разниц значений цветов на одинаковых позициях по модулю.

У Ивана есть NFT bb. Найдите, как он должен переставить пиксели в своём NFT, чтобы его пиксельная разница с NFT aa была минимальна.

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

В единственной строке записаны числа nn и mm (1n,m5001 \le n, m \le 500) – ширина и высота NFT.

В следующих nn строках записано по mm чисел. jj-тое число ii-й строки - это цвет клетки (i,j)(i,j) в NFT aa, которое будет подделывать Иван.

В следующих nn строках записано по mm чисел. jj-тое число ii-й строки - это цвет клетки (i,j)(i,j) в NFT bb, которое купил себе Иван.

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

В первой строке выведите одно число – минимально возможную пиксельную разницу.

Затем выведите nn строк по mm чисел, где jj-тое число ii-й строки – это номер пикселя из изначального NFT, который следует переставить на позицию (i,j)(i, j). Номер пикселя на позиции (x,y)(x, y) равен xm+y+1x \cdot m + y + 1 при индексации с нуля.

Если ответов несколько, выведите любой.

Подзадачи

баллынеобх. подзадачиограничения
1

10

-

n×m10n \times m \le 10

2

24

1

n,m50n, m \le 50

3

22

-

Все цвета в aa попарно различны, все цвета в bb попарно различны

4

44

2, 3

Нет доп. ограничений

STDINSTDOUT
3 3
1 1 1
1 4 1
3 3 2
3 2 1
2 1 4
2 1 1
2
3 5 8 
9 6 2 
7 1 4