Олимпиадный тренинг

Задача . C. Не соседняя матрица


Задача

Темы: Конструктив *1000

Будем считать числа \(a\) и \(b\) соседними, если они отличаются ровно на единицу, то есть \(|a-b|=1\).

Будем считать клетки квадратной матрицы \(n \times n\) соседними, если они имеют общую сторону, то есть для клетки \((r, c)\) соседними являются клетки \((r, c-1)\), \((r, c+1)\), \((r-1, c)\) и \((r+1, c)\).

Для заданного числа \(n\) постройте квадратную матрицу \(n \times n\), такую что:

  • Каждое число от \(1\) до \(n^2\) встречается в этой матрице ровно один раз;
  • Если \((r_1, c_1)\) и \((r_2, c_2)\) соседние клетки, тогда числа записанные в них не должны быть соседними.
Входные данные

В первой строке содержится одно целое число \(t\) (\(1 \le t \le 100\)). Далее следуют \(t\) наборов входных данных.

Каждый набор входных данных характеризуется одним целым числом \(n\) (\(1 \le n \le 100\)).

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

Для каждого набора входных данных выведите:

  • -1, если искомой матрицы не существует;
  • искомую матрицу, иначе (любую подходящую, если таких существует много).

Матрицу следуют выводить в виде \(n\) строк, где каждая строка содержит \(n\) целых чисел.


Примеры
Входные данныеВыходные данные
1 3
1
2
3
1
-1
2 9 7
4 6 3
1 8 5

time 4000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя