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