На клетчатом поле нарисован прямоугольник размера N × M клеток (N строк, M столбцов). В прямоугольнике выбрана одна из клеток. Ваша задача – найти путь, который начинается в выбранной клетке и обходит все клетки прямоугольника, пройдя по каждой ровно один раз.
На каждом шаге пути вы можете переходить в соседнюю (по стороне) клетку, в которой ещё не были ранее.
Выходные данные
Если решение существует, то выведите возможный вариант обхода прямоугольника в виде таблицы N × M, в которой каждое число – это номер шага, на котором была посещена соответствующая клетка. От вас не требуется выравнивать столбцы пробелами, как в примере – достаточно, чтобы выводимые числа разделялись хотя бы одним пробелом.
Если решения нет, выведите -1.
Система оценки
Подзадача 1 (до 52 баллов): 1 ≤ N, M ≤ 20, Y = X = 1.
Подзадача 2 (до 20 баллов): 1 ≤ N, M ≤ 6.
Подзадача 3 (до 28 баллов): 1 ≤ N, M ≤ 20.
Каждый тест в каждой подзадаче оценивается независимо.
Примеры
Выходные данные
10 9 8
11 12 7
2 1 6
3 4 5