#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int n, mx, aux, k=1, v1[1000];
vector <int> v(1000);
int main()
{
    cin >> n;
    for (int i = 1; i <= n*n; i++){
        cin >> v[i];
    }
    for (int i = 1; i <= n; i++){
        v1[k] = *(std::max_element(v.begin(), v.end()));
        for (int j = 1; j <= n*n; j++)
             if (v[j] == v1[k]){
                v[j] = -1;
                break;
            }
        k+=4;
    } k=1;
    for (int i = 1; i <= n*n; i++){
        if ((i-1) % (n+1) != 0){
                if (v[k]!=-1) v1[i]=v[k];
                else {while (v[k]==-1) k++;
                v1[i]=v[k];
        }}
    k++;
    }
    k=1;
    for (int i = 1; i <= n*n; i++){
        if (k==n+1) {cout <<"\n"; k=1;}
        cout << v1[i] <<" ";
        k++;}
    return 0;
}