#include <bits/stdc++.h>
using namespace std;
#define MAXN 1001
int n, ind;
long long ans;
long long a[MAXN][MAXN];
vector<long long> vec;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i(1); i<=n; ++i){
for (int j(1); j<=n; ++j) cin >> a[i][j];
}
for (int j(1); j<=n; ++j){
vec.clear();
for (int i(n); i; --i){
if (a[i][j]) vec.push_back(a[i][j]);
}
for (int i(0); i<vec.size()-1; ++i){
if (vec[i] == vec[i+1]){
vec[i] <<= 1;
vec[i+1] = 0;
ans += vec[i];
}
}
ind = 0;
for (int i(1); i<=n; ++i) a[i][j] = 0;
for (int i(n); ind<vec.size(); --i, ++ind){
if (vec[ind]) a[i][j] = vec[ind];
else ++i;
}
}
cout << ans << '\n';
for (int i(1); i<=n; ++i){
for (int j(1); j<=n; ++j) cout << a[i][j] << ' ';
cout << '\n';
}
return 0;
}