import java.util.Arrays; import java.io.OutputStream; import java.io.PrintWriter; import java.util.InputMismatchException; import java.io.IOException; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top * @author George Marcus */ public class prog { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; InputReader in = new InputReader(inputStream); PrintWriter out = new PrintWriter(outputStream); Domimatrix solver = new Domimatrix(); solver.solve(1, in, out); out.close(); } } class Domimatrix { public void solve(int testNumber, InputReader in, PrintWriter out) { int N = in.nextInt(); Integer[] A = new Integer[N * N]; for (int i = 0; i < N * N; i++) { A[i] = in.nextInt(); } Arrays.sort(A); int[][] B = new int[N][N]; for (int i = 0; i < N; i++) { B[i][i] = A[N * N - 1 - i]; } int k = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i != j) { B[i][j] = A[k++]; } } } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { out.print(B[i][j] + " "); } out.println(); } } } class InputReader { private InputStream stream; private byte[] buf = new byte[1024]; private int curChar; private int numChars; public InputReader(InputStream stream) { this.stream = stream; } public int read() { if (numChars == -1) throw new InputMismatchException(); if (curChar >= numChars) { curChar = 0; try { numChars = stream.read(buf); } catch (IOException e) { throw new InputMismatchException(); } if (numChars <= 0) return -1; } return buf[curChar++]; } public int nextInt() { return Integer.parseInt(nextString()); } public String nextString() { int c = read(); while (isSpaceChar(c)) c = read(); StringBuffer res = new StringBuffer(); do { res.appendCodePoint(c); c = read(); } while (!isSpaceChar(c)); return res.toString(); } private boolean isSpaceChar(int c) { return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1; } }