#include<bits/stdc++.h>
using namespace std;
int n,s,a[20],h[6],l[6],dia[3],ch[6][6];
bool v[20];
void dfs(int x){
if(x>n*n){
if(dia[0]!=s)return;
if(dia[1]!=s)return;
for(int i=1;i<=n;i++){
if(h[i]!=s)return;
if(l[i]!=s)return;
}
for(int i=1;i<=n;i++,cout<<endl)
for(int j=1;j<=n;j++)
cout<<ch[i][j]<<' ';
exit(0);
}
int row=(x+n-1)/n;
int col=x%n==0?n:x%n;
for(int i=1;i<=n*n;i++){
if(v[i])continue;
if(h[row]+a[i]>s)break;
if(l[col]+a[i]>s)break;
if(row==col&&dia[0]+a[i]>s)break;
if(row+col==n+1&&dia[1]+a[i]>s)break;
h[row]+=a[i];
l[col]+=a[i];
if(row==col)dia[0]+=a[i];
if(row+col==n+1)dia[1]+=a[i];
ch[row][col]=a[i];
v[i]=1;
dfs(x+1);
h[row]-=a[i];
l[col]-=a[i];
if(row==col)dia[0]-=a[i];
if(row+col==n+1)dia[1]-=a[i];
v[i]=0;
}
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n*n;i++){
cin>>a[i];
s+=a[i];
}
sort(a+1,a+1+n*n);
s/=n;
cout<<s<<endl;
dfs(1);
return 0;
}