void NQueen(vector<int> & steps, const int & n, int & res) { if(steps.size() == n) { res++; } else { for(int i = 0 ; i < n ;i++) { if(IsVaild(steps, i)) { steps.push_back(i); NQueen(steps,n, res); steps.pop_back(); } } } }
void NQueen(int k,int n) { for(int i=1;i<=n;i++) { if(place(k,i)) { x[k]=i; if(k==n) { for(l=1;l<=n;l++) a[p][l]=x[l]; p++; } else NQueen(k+1,n); } } }
int main(){ scanf("%d",&cas); for(c=0;c<cas;c++){ for(int q=0;q<8;q++) for(int j=0;j<8;j++) scanf("%d",&w[q][j]); p=0; NQueen(1,8); sm=0; for(int i=0;i<p;i++){ sum=0; for(int j=1;j<=8;j++){ sum=sum+w[j-1][a[i][j]-1]; } if(sum>sm) sm=sum; } printf("%5d\n",sm); } return 0; }
int totalNQueens(int n) { vector<int> steps; int ret = 0; NQueen(steps,n,ret); return ret; }