#include<iostream>
//#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>
#include<unordered_map>

using namespace std;
typedef int var;

#define fin cin
#define fout cout

//ifstream fin("p1.in");
//ofstream fout("p1.out");

var A[500][500];
var V[500*500];

int main() {

    var n;

    fin>>n;
    for(var i=1; i<=n*n; i++) {
        fin>>V[i];
    }

    sort(V+1, V+n*n+1,[](var a, var b) {
            return a>b;
         });

    for(var i=1; i<=n; i++) {
        A[i][i] = V[i];
    }

    var ind = n;

    for(var i=1; i<=n; i++) {
        for(var j=1; j<=n; j++) {
            if(i!=j) {
                A[i][j] = V[++ind];
            }
        }
    }

    for(var i=1; i<=n; i++) {
        for(var j=1; j<=n; j++) {
            fout<<A[i][j]<<" ";
        }
        fout<<endl;
    }

    return 0;
}