1 #include <iostream>
2 using namespace std;
3 #define SIZE 21
4 int map[SIZE][SIZE];
5 int n=0;
6 int maxnum=0;
7 int node[SIZE];
8 void findmax(int step,int num);
9 int main()
10 {
11 cin >> n;
12 for(int i=0;i<n;i++)
13 {
14 for(int j=0;j<n;j++)
15 {
16 cin >>map[i][j];
17 }
18 }
19 for(int i=0;i<n;i++)
20 {
21 node[i]=1;
22 }
23 findmax(0,0);
24 cout <<maxnum<<endl;
25 return 0;
26 }
27 void findmax(int step,int num)
28 {
29 int num_a=num;
30 if(step==n)
31 {
32 return;
33 }
34 node[step]=0;
35
36 for(int i=0;i<n;i++)
37 {
38 if(node[i]==0)
39 {
40 num_a-=map[step][i];
41 }
42 else
43 {
44 num_a+=map[step][i];
45 }
46 }
47 if(num_a>maxnum)
48 {
49 maxnum=num_a;
50 }
51 for(int i=step+1;i<n;i++)
52 {
53 if(num_a>num)
54 {
55 findmax(i,num_a);
56 node[i]=1;
57 }
58 }
59 }