#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; array,16> T{}; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ cin >> T[i][j]; } } array id; id.fill(1 << 30); vector> dp(1 << n, id); dp[1 << 0][0] = 0; for(int S = 1; S < (1 << n); S++){ int r = n - __builtin_popcount(S); for(int i = 0; i < n; i++){ if(~S >> i & 1) continue; for(int j = 0; j < n; j++){ dp[S | (1 << j)][j] = min(dp[S | (1 << j)][j] , dp[S][i] + T[i][j] * r); } } } cout << *min_element(dp.back().begin(), dp.back().end()) << '\n'; }