#include <iostream>
using namespace std;
int
n, workalloc[11], manalloc[11], g[11][11], best, manalloccopy[11];
void
__read__()
{
cin >> n;
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= n; j++ )
cin >> g[i][j];
}
void
__dfs__( int x, int w )
{
if( x > n && w > best)
{
best = w;
for( int i = 1; i <= n; i++ )
manalloccopy[i] = manalloc[i];
}
else if( x <= n )
for( int i = 1; i <= n; i++ )
if( !workalloc[i] )
{
workalloc[i] = x;
manalloc[x] = i;
__dfs__( x + 1, w + g[x][i] );
workalloc[i] = 0;
}
}
void
__outp__()
{
cout << best << endl;
for( int i = 1; i <= n; i++ )
cout << manalloccopy[i] << " ";
cout << endl;
}
int
main()
{
__read__();
__dfs__( 1, 0 );
__outp__();
return 0;
}