/*
    Keep It Simple!
*/

#include <fstream>
#include <vector>
#include <list>
#include <stack>
#include <string>
#include <cmath>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;

#ifndef ONLINE_JUDGE
    ifstream cin("data.in");
    ofstream cout("data.out");
#else
    #include<iostream>
#endif // ONLINE_JUDGE

#define ll long long
#define mp make_pair
#define fi first
#define se second
#define pb push_back

typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

const int kMaxN = 105;

int N;
int Nums[kMaxN*kMaxN];

void Solve()
{
    cin >> N;
    for (int i = 1; i <= N*N; ++i)
        cin >> Nums[i];
    sort(Nums+1,Nums+1+N*N,greater<int>());
    for (int i = 1; i <= N; ++i)
            swap(Nums[i],Nums[(i-1)*N + i]);

    for (int i = 1; i <= N; ++i)
    {
        for (int j = 1; j <= N; ++j)
                cout << Nums[(i-1)*N + j] << ' ';
        cout << '\n';
    }
}

int main()
{
    Solve();
    return 0;
}