#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n;
int c[N][N];
int choose[N];
int ans[N];
bool check[N];
int res = 0;
int maxrow[N];
void prepare(){
for (int i = 0; i < n; i++ ){
int maxval = -1 ;
for ( int j = 0 ; j < n ;j++ ){
if ( c[i][j] > maxval ){
maxval = c[i][j];
}
}
maxrow[i] = maxval;
}
for (int i = n - 2; i >= 0; i-- ){
maxrow[i] += maxrow[i + 1];
}
}
void dequy ( int id , int curc ){
if ( id < n && curc + maxrow[id] <= res ) return;
if ( id == n ){
if ( curc > res) {
res = curc ;
for ( int i = 0 ; i < n ; i++ ){
ans[i] = choose[i];
}
}
return;
}
for (int i = 0; i < n ; i++ ){
if ( !check[i] ){
check[i] = true;
choose[id] = i + 1 ;
dequy(id + 1 , curc + c[id][i]);
check[i] = false;
}
}
}
int main(){
cin >> n;
for ( int i = 0 ; i < n ; i++ ){
for ( int j = 0 ; j < n ; j++ ){
cin >> c[i][j];
}
}
prepare();
dequy(0, 0);
cout << res << endl;
for ( int i = 0 ; i < n ; i++ ){
cout << ans[i] << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOID0gMzA7CmludCBuOwppbnQgY1tOXVtOXTsgCmludCBjaG9vc2VbTl07IAppbnQgYW5zW05dOyAKYm9vbCBjaGVja1tOXTsgCmludCByZXMgPSAwOwppbnQgbWF4cm93W05dOwp2b2lkIHByZXBhcmUoKXsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrICl7CiAgICAgICAgaW50IG1heHZhbCA9IC0xIDsgCiAgICAgICAgZm9yICggaW50IGogPSAwIDsgaiA8IG4gO2orKyApewogICAgICAgICAgICBpZiAoIGNbaV1bal0gPiBtYXh2YWwgKXsKICAgICAgICAgICAgICAgIG1heHZhbCA9IGNbaV1bal07IAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG1heHJvd1tpXSA9IG1heHZhbDsKICAgIH0KICAgIGZvciAoaW50IGkgPSBuIC0gMjsgaSA+PSAwOyBpLS0gKXsKICAgICAgICBtYXhyb3dbaV0gKz0gbWF4cm93W2kgKyAxXTsKICAgIH0KfQp2b2lkIGRlcXV5ICggaW50IGlkICwgaW50IGN1cmMgKXsKICAgIGlmICggaWQgPCBuICAmJiBjdXJjICsgbWF4cm93W2lkXSA8PSByZXMgKSByZXR1cm47CiAgICBpZiAoIGlkID09IG4gKXsKICAgICAgICBpZiAoIGN1cmMgPiByZXMpIHsKICAgICAgICAgICAgcmVzID0gY3VyYyA7IAogICAgICAgICAgICBmb3IgKCBpbnQgaSA9IDAgOyBpIDwgbiA7IGkrKyApewogICAgICAgICAgICAgICAgYW5zW2ldID0gY2hvb3NlW2ldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiA7IGkrKyApewogICAgICAgIGlmICggIWNoZWNrW2ldICl7CiAgICAgICAgICAgIGNoZWNrW2ldID0gdHJ1ZTsgCiAgICAgICAgICAgIGNob29zZVtpZF0gPSBpICsgMSA7IAogICAgICAgICAgICBkZXF1eShpZCArIDEgLCBjdXJjICsgY1tpZF1baV0pOwogICAgICAgICAgICBjaGVja1tpXSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KfQppbnQgbWFpbigpewogICAgY2luID4+IG47IAogICAgZm9yICggaW50IGkgPSAwIDsgaSA8IG4gOyBpKysgKXsKICAgICAgICBmb3IgKCBpbnQgaiA9IDAgOyBqIDwgbiA7IGorKyApewogICAgICAgICAgICBjaW4gPj4gY1tpXVtqXTsKICAgICAgICB9CiAgICB9CiAgICBwcmVwYXJlKCk7CiAgICBkZXF1eSgwLCAwKTsKICAgIGNvdXQgPDwgcmVzIDw8IGVuZGw7CiAgICBmb3IgKCBpbnQgaSA9IDAgOyBpIDwgbiA7IGkrKyApewogICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8ICIgIjsKICAgIH0KfQ==