KUPC 2025 (Open) 2026/03/28 09:00 ~ 2026/03/28 14:00 5:00:00.000

I Xor Magic Square

問題
制限時間: 2 sec メモリ制限: 1024 MB
Xor Magic Square
Statement

正の整数からなる \(N \times N\) 行列であって、各行、各列、両対角線についてそれぞれの総 XOR が \(0\) であるものを、大きさ \(N\) のよい行列といいます。

より厳密には、\(N \times N\) 行列 \(A\) であって、以下の条件をすべて満たすものを大きさ \(N\) のよい行列といいます。ここで、\(x \oplus y\) は \(x\) と \(y\) のビット単位 XOR を表し、\(\displaystyle \bigoplus_{i=1}^{N} a_i = a_1 \oplus \ldots \oplus a_N\) です。

  • \(A_{i, j}\ (1 \le i, j \le N)\) は正の整数
  • \(i = 1, 2, \ldots N\) について、\(\displaystyle \bigoplus_{j=1}^{N} A_{i,j}= 0\)
  • \(j = 1, 2, \ldots N\) について、\(\displaystyle \bigoplus_{i=1}^{N} A_{i,j}= 0\)
  • \(\displaystyle \bigoplus_{i=1}^{N} A_{i,i}= 0\)
  • \(\displaystyle \bigoplus_{i=1}^{N} A_{i,N-i+1}= 0\)

正の整数 \(N\) が与えられます。

大きさ \(N\) のすべてのよい行列のうち、全要素の総和 \(\displaystyle \sum_{1 \le i, j \le N} A_{i, j}\) が最小であるものを \(1\) つ出力してください。

ただし、大きさ \(N\) のよい行列が存在しない場合は、そのことを報告してください。

Input

\(1\) 行に整数 \(N\) が入力される。( \(1 \le N \le 2\times 10^3\) )

Output

大きさ \(N\) のよい行列が存在しない場合、\(1\) 行に \(-1\) を出力せよ。

存在する場合、\(1\) 行目に全要素の総和の最小値を出力せよ。

続く \(N\) 行に、それを達成する行列 \(A\) を空白区切りで出力せよ。つまり、\(i+1\) 行目には行列 \(A\) の \(i\) 行目の要素を空白区切りで出力せよ。

解が複数存在する場合、どれを出力してもよい。

Examples

Input 1
2
Output 1
4
1 1
1 1
Input 2
1
Output 2
-1

Note

最初のケースについて、各行、各列、両対角線についてそれぞれの総 XOR が \(0\) であり、これはよい行列の条件を満たしています。また、大きさ \(2\) のすべてのよい行列について、全要素の総和を \(4\) より小さくできないので、最小値は \(4\) です。

\(2\) つ目のケースについて、大きさ \(1\) のよい行列は存在しないため、\(-1\) を出力します。

非負整数 \(x,y\) のビット単位 XOR \(x \oplus y\) は以下のように定義されます。

  • \(x \oplus y\)を二進表記した際の \(2^k \ (k \geq 0)\) の位の数は、\(x,y\) を二進表記した際の \(2^k\) の位の数のうち丁度一方が \(1\) であれば \(1\)、そうでなければ \(0\) である。

例えば、\(3 \oplus 5 = 6\) となります(二進表記すると \(011 \oplus 101 = 110\) )。