#include using namespace std; #define ALL(x) begin(x),end(x) #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } signed main(){ int p3[10]; { int b=1; rep(i,10){ p3[i]=b; b*=3; } } auto take=[&](int bit,int i){ rep(j,i) bit/=3; return bit%3; }; int n;cin>>n; ll cost[n][n]; rep(i,n)rep(j,n)cin>>cost[i][j]; ll dp[p3[n]][n]; rep(i,p3[n])rep(j,n) dp[i][j]=LINF; rep(i,n){ dp[p3[i]][i]=0; } ll res=LINF; rep(bit,p3[n])rep(j,n){ rep(k,n){ if(take(bit,k)==2 or j==k) continue; int nxt=bit+p3[k]; chmin(dp[nxt][k],dp[bit][j]+cost[j][k]); // fin? { bool f=true; if(take(bit,j)!=2) f=false; rep(l,n)if(l!=k and take(bit,l)!=2) f=false; if(f){ // rep(l,n){ // cout< "<