Лісопосадки
Часто при вирубці лісу для будівництва, наприклад, доріг проводяться компенсаційні лісопосадки — рівна або більша кількість дерев висажується у іншому місці. Проте посаджений таким чином ліс відрізняється від того,що виріс сам, — при компенсаційній посадці дерева як правило саджають у вузлах регулярної гратки, що змінює вплив дерев одне на одного.
Павло займається математичним моделюванням росту дерев, висаджених у вузлах прямокутної гратки. Будемо вважати, що у вузли гратки розміром n×m посаджено дерева. Два дерева вважааються сусідніми, якщо вузли, у яких вони растуть, є сусідніми по вертикалі чи по горизонталі. У кожного дерева є своя высота, рівна деякому цілому числу метрів.
Павло вважає, що висота дерев змінюється з роками за наступним законом:
якщо у дерева є хоча б один сусід, висота якого рівно на один метр більше висоты самого дерева, то через рік висота дерева збільшується рівно на один метр;
якщо у дерева немає такого сусіда, його висота через рік залишається попередньою.
При моделванні росту дерев за цими правилама ріст усіх дерев зупииться в той момент, коли сусідніх дерев з різницею у рості, рівною одному метру, не залишиться. Павло хоче вияснити, скільки роуів пройде до цього моменту і яка висота буде у цей момент у кожного дерева.
Допоможіть йому, напишіть програму, яка за заданими початковими висотами дерев визначить, через скільки років ріст усіх дерев зупиниться і якиою буде висота кожного дерева у цей момент.
Вхідні дані
У первшому рядку вхідного файлу знаходяться два цілих числа n та m — розміри ділянки лісу (1 ≤ n, m ≤ 100). Наступні n рядків містять по m натуральних чисел, кожне з яких задає висоту відповідного дерева. Висота кожного дерева не перевищує 100.
Вихідні дані
У першому рядку вихідного файлу виведіть t — кількість років, яка пройде до того моменту, коли усі дерева перестануть рости. Після цього виведіть n рядків по m чисел — кожне число повинно бути рівним висоті відповідного дерева через t років.