#700. 幻方芯片

幻方芯片

问题描述

工厂研制出一块“幻方加密芯片”,启动该芯片需要一枚 M×MM \times M 的奇阶幻方作为动态密钥。幻方是一个 M×MM \times M 的矩阵(MM 为奇数),其每行、每列与对角线上的数字之和都相同。

将数字 1,2,…,M21, 2, \ldots, M^2 依次填入矩阵构建幻方的具体规则如下:

  • 数字 11 填在第一行的正中间;
  • 记上一个填入的数字位置为 (r,c)(r, c),下一个数字原则上填在其右上方(即第 r−1r - 1 行,第 c+1c + 1 列);
  • 特殊情况处理规则:
    • 规则 a:如果上一个数字位于右上角(即第 11 行第 MM 列),或者其右上方已有数字,则下一个数字填在该数字的正下方(即第 r+1r + 1 行,第 cc 列);
    • 规则 b:否则,若上一个数字在第一行(r=1r = 1),则下一个数字填在最后一行,列数为右一列(即第 MM 行,第 c+1c + 1 列);
    • 规则 c:否则,若上一个数字在最后一列(c=Mc = M),则下一个数字填在第一列,行数为上一行(即第 r−1r - 1 行,第 11 列)。

输入格式

第一行输入一个正整数 NN,表示要构造的幻方大小为 (2N−1)×(2N−1)(2N - 1) \times (2N - 1)。

输出格式

输出共 2N−12N - 1 行,每行包含 2N−12N - 1 个正整数,数与数之间用空格隔开,表示构造完成的幻方矩阵。

样例输入 1

3

样例输出 1

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

评测数据规模

对于所有评测数据:

  • 1≤N≤201 \leq N \leq 20
  • 输入为整数