#include #define REP(i,n) for(int i=0,i##_len=(n);i>N; vector> X(N,vector(N)); REP(i,N) REP(j,N) cin>>X[i][j]; vector A(N); REP(i, N){ cin >> A[i]; } int ans=INT_MAX; REP(bit,1<>j&1){ res+=A[j]; } bool zihaku=false; REP(i,N){ bool z=true; REP(j,N) if(X[i][j]&&~bit>>j&1) z=false; zihaku|=z; } bool flag=zihaku; if(flag) REP(i,N) if(~bit>>i&1){ rep(j,i+1,N) if((~bit>>j&1)&&X[i][j]){ if(X[j][i]) flag=false; } } if(flag) ans=min(ans,res); } cout<