using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; if (n == 1) { WriteLine(-1); return; } var a = new int[][] { new int[] { 0, 3 }, new int[] { 2, 1 } }; for (var i = 0; i < n - 1; ++i) { a = Double(a); } for (var i = 0; i < a.Length; i += 2) { (a[i][a.Length - i - 1], a[i + 1][a.Length - i - 2]) = (a[i + 1][a.Length - i - 2], a[i][a.Length - i - 1]); } WriteLine(string.Join("\n", a.Select(ai => string.Join(" ", ai)))); } static int[][] Double(int[][] a) { var ans = new int[a.Length * 2][]; for (var i = 0; i < ans.Length; ++i) ans[i] = new int[a.Length * 2]; for (var i = 0; i < a.Length; ++i) for (var j = 0; j < a[i].Length; ++j) { ans[i][j] = a[i][j]; ans[i + a.Length][j + a.Length] = a[i][j] + a.Length * a.Length; ans[i + a.Length][j] = a[i][j] + a.Length * a.Length * 2; ans[i][j + a.Length] = a[i][j] + a.Length * a.Length * 3; } return ans; } }