eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Фарбування

Фарбування

Існує стіна, що складається з \textbf{n}×\textbf{n} плиток. Давним-давно ці плитки були пофарбовані в \textbf{k} різних кольорів. Тепер фарби зношуються і стіну необхідно перефарбувати. На цей раз всі плитки стіни повинні бути пофарбовані лише в один із \textbf{k} кольорів. За один хід ми можемо фарбувати один горизонтальний або вертикальний ряд плиток. Також ми можемо фарбувати рядок в даний колір, тільки якщо принаймні дві плитки в цьому ряду (горизонтальному або вертикальному) вже цього кольору (або старої або нової фарби). Вам потрібно з'ясувати, яка найменша кількість ходів необхідна, щоб пофарбувати всі плитки. \InputFile Перший рядок вхідного файлу містить кількість тестів. Перший рядок кожного тесту містить два цілих числа: \textbf{n} (\textbf{1} < \textbf{n} < \textbf{500}) - кількість плиток в один ряд і \textbf{k} (\textbf{1} ≤ \textbf{k} < \textbf{n}) - число різних кольорів. У кожному з наступних \textbf{n} рядків міститься по \textbf{n} цілих чисел, які задають номери кольорів, в які пофарбовані відповідні плитки. Кольори мають номери від \textbf{1} до \textbf{k}. \OutputFile Перший рядок виводу для кожного тесту повинен містити число \textbf{q} - мінімальне число ходів, необхідних, щоб пофарбувати всі плитки. У другому рядку перерахуйте всі кольори, в які можна пофарбувати стіну використовуючи мінімальну кількість ходів. Номери повинні бути перераховані в порядку зростання. Якщо стіну неможливо пофарбувати за правилами, зазначеними в умові, виведіть лише одне число - \textbf{0}.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
2
3 2
1 2 1
2 1 1
1 2 2
2 1
1 1
1 1
Вихідні дані #1
4
1
2
1
Джерело Всеукраїнська студентська олімпіада з програмування, ФІНАЛ, Харків 15 жовтня 2011, 2-га ліга