#arc056c. [arc056_c]部門分け

[arc056_c]部門分け

问题描述

高桥所在的公司由 NN 名员工组成。员工 ii 和员工 jj 之间有一个信任值 wi,jw_{i,j}。 由于公司不断发展壮大,需要将 NN 名员工分为若干个部门。定义部门分配的得分为 (部门数) ×K\times K - (属于不同部门的两人之间的信任值总和)。请编写程序求得最大得分。


约束条件

  • 1N171 \leq N \leq 17
  • iji \neq j 时,1wi,j1061 \leq w_{i,j} \leq 10^6
  • wi,i=0w_{i,i} = 0
  • wi,j=wj,iw_{i,j}=w_{j,i}
  • 1K1061 \leq K \leq 10^6
  • 输入均为整数

部分得分

  • 如果对满足 N9N \leq 9 的所有测试用例均正确,则可以获得部分得分 4040 分。
  • 如果对满足 N15N \leq 15 的所有测试用例均正确,则可以获得部分得分另外 4040 分。

输入

输入以以下格式从标准输入中给出。

NN KK w1,1w_{1,1} ... w1,Nw_{1,N} : wN,1w_{N,1} ... wN,Nw_{N,N}

输出

输出一个整数,表示最大得分。


示例1


3 3
0 1 5
1 0 1
5 1 0

输出示例1


4

将员工 1133 分在一个部门,员工 22 分在一个部门,此时部门数为 22,不同部门之间的两人信任值总和为 22,所以得分为 2×32=42 \times 3 - 2 = 4。没有办法得到更大的得分。


示例2


4 8
0 2 3 5
2 0 1 2
3 1 0 8
5 2 8 0

输出示例2


11

示例3


5 10
0 10 1 2 1
10 0 1 2 1
1 1 0 6 7
2 2 6 0 8
1 1 7 8 0

输出示例3


12