#include<bits/stdc++.h>
using namespace std;
int n,a[17],vis[17],num;
int ans[5][5];
inline void dfs(int x,int y,int z){
if(y>n||x>n){
if(x>n){
int sum=0,sum1=0,sum2=0,sum3=0;
for(int i=1;i<=n;i++)sum+=ans[1][i];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
sum1+=ans[i][j];
sum2+=ans[j][i];
if(i==j)sum3+=ans[i][j];
}
if(sum1!=sum||sum2!=sum)return;
sum1=sum2=0;
}
if(sum!=sum3)return;
if(sum3!=ans[1][n]+ans[2][n-1]+ans[3][n-2]+ans[4][n])return;
cout<<sum<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<ans[i][j]<<" ";
}cout<<endl;
}exit(0);
}
if(y>n)
if(z==num/n)dfs(x+1,1,0);
}
for(int i=1;i<=n*n;i++){
if(vis[i])continue;
if(y==n){
int u=a[i];
for(int j=1;j<n;j++) u+=ans[x][j];
if(u!=num/n) continue;
}
if(x==n){
int u=a[i];
for(int j=1;j<n;j++) u+=ans[j][y];
if(u!=num/n) continue;
}
if(x==n&&y==1){
int u=a[i];
for(int j=1;j<n;j++) u+=ans[j][n-j+1];
if(u!=num/n) continue;
}
if(x==n&&y==n){
int u=a[i];
for(int j=1;j<n;j++) u+=ans[j][j];
if(u!=num/n) continue;
}vis[i]=1;ans[x][y]=a[i];
dfs(x,y+1,z+a[i]);
vis[i]=0;
}
}
int main(){
cin>>n;
for(int i=1;i<=n*n;i++)scanf("%d",&a[i]),num+=a[i];sort(a+1,a+n*n+1);
dfs(1,1,0);
}