我是清楚姐姐
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个整数 n,请构造一个 n\times n 的矩阵。矩阵中第 i 行第 j 列的元素记为 a_{i,j} ,下标均从 1 开始。
\hspace{15pt}你需要使矩阵中的所有元素恰好构成 1\sim n^2 的一个排列。令 p_i=\gcd(a_{1,i},a_{2,i},\cdots,a_{n,i}) 表示第 i 列所有元素的最大公约数。要求 \lbrace p_1,p_2,\cdots,p_n\rbrace 是一个长度为 n 的排列。

【名词解释】
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
\hspace{15pt}最大公约数(gcd):指两个或多个整数共有约数中最大的一个。例如,1230 的公约数有 1,2,3,6,其中最大的约数是 6,因此记作 \gcd(12,30)=6。特别地,单个整数的 \gcd 定义为其自身。

输入描述:

\hspace{15pt}输入一行一个整数 n(1\leq n\leq 100),表示矩阵的行数和列数。

输出描述:

\hspace{15pt}若不存在满足条件的解,输出一行一个整数 -1
\hspace{15pt}否则输出 n 行,每行 n 个整数,表示一个满足题意的矩阵。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2

输出

复制
1 2
3 4
示例2

输入

复制
5

输出

复制
-1