#include <bits/stdc++.h>
using namespace std;
const int N = 30;
const long long INF = 1e18;
int n;
long long c[N][N];
bool check[N];
long long choose[N];
long long ans[N];
long long res = INF;
long long minrow[N];
void prepare(){
for (int i = 0; i < n; i++) {
long long minval = INF;
for (int j = 0; j < n; j++) {
if (c[i][j] < minval) {
minval = c[i][j];
}
}
minrow[i] = minval;
}
for (int i = n - 2; i >= 0; i--) {
minrow[i] += minrow[i+1];
}
}
void dequy ( int id , long long curc ){
if ( id < n && curc + minrow[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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOID0gMzA7CmNvbnN0IGxvbmcgbG9uZyBJTkYgPSAxZTE4OwppbnQgbjsgCmxvbmcgbG9uZyBjW05dW05dOwpib29sIGNoZWNrW05dOwpsb25nIGxvbmcgY2hvb3NlW05dOwpsb25nIGxvbmcgYW5zW05dOyAKbG9uZyBsb25nIHJlcyA9IElORjsKbG9uZyBsb25nIG1pbnJvd1tOXTsgCnZvaWQgcHJlcGFyZSgpewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBsb25nIGxvbmcgbWludmFsID0gSU5GOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGlmIChjW2ldW2pdIDwgbWludmFsKSB7CiAgICAgICAgICAgICAgICBtaW52YWwgPSBjW2ldW2pdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG1pbnJvd1tpXSA9IG1pbnZhbDsKICAgIH0KICAgIGZvciAoaW50IGkgPSBuIC0gMjsgaSA+PSAwOyBpLS0pIHsKICAgICAgICBtaW5yb3dbaV0gKz0gbWlucm93W2krMV07CiAgICB9Cn0Kdm9pZCBkZXF1eSAoIGludCBpZCAsIGxvbmcgbG9uZyBjdXJjICl7CiAgICBpZiAoIGlkIDwgbiAmJiBjdXJjICsgbWlucm93W2lkXSA+PSByZXMgKSByZXR1cm47CiAgICBpZiAoIGlkID09IG4gKXsKICAgICAgICBpZiAoIGN1cmMgPCByZXMgKXsKICAgICAgICAgICAgcmVzID0gY3VyYzsKICAgICAgICAgICAgZm9yICggaW50IGkgPSAwIDsgaSA8IG4gOyBpKysgKSAKICAgICAgICAgICAgICAgIGFuc1tpXSA9IGNob29zZVtpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDsgCiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKyApewogICAgICAgIGlmICggIWNoZWNrW2ldKSB7CiAgICAgICAgICAgIGNoZWNrW2ldID0gdHJ1ZTsgCiAgICAgICAgICAgIGNob29zZVtpZF0gPSBpKzE7IAogICAgICAgICAgICBkZXF1eShpZCsxLCBjdXJjICsgY1tpZF1baV0pOwogICAgICAgICAgICBjaGVja1tpXSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KfQppbnQgbWFpbigpewogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGNpbiA+PiBjW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIHByZXBhcmUoKTsKICAgIGRlcXV5KDAsIDApOwogICAgY291dCA8PCByZXMgPDwgZW5kbDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgIiAiOwogICAgfQp9