#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] << " ";
    }
}