#arc056c. [arc056_c]部門分け

[arc056_c]部門分け

問題文

高橋くんのいる会社はNN人の社員からなる。社員iiと社員jjの間には、信頼度wi,jw_{i,j}が定まっている。 おかげ様で会社はぐんぐん成長したため、NN人をいくつかの部門に分けることになった。ここで、部門分けのスコアを、(部門の数)*KK-(異なる部門に属する22人の間の信頼度の総和)と定める。 スコアの最大値を求めるプログラムを書いてください。


制約

  • 1N171 ≦ N ≦ 17
  • iji≠j のとき、 1wi,j1061 ≦ w_{i,j} ≦ 10^6
  • wi,i=0w_{i,i} = 0
  • wi,j=wj,iw_{i,j}=w_{j,i}
  • 1K1061 ≦ K ≦ 10^6
  • 入力はすべて整数である

部分点

  • N9N ≦ 9 を満たすテストケース全てに正解した場合、部分点として4040点が与えられる。
  • N15N ≦ 15 を満たすテストケース全てに正解した場合、部分点として追加で4040点が与えられる。

入力

入力は以下の形式で標準入力から与えられる。

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

出力

11行目に、スコアの最大値を出力せよ。


入力例1


3 3
0 1 5
1 0 1
5 1 0

出力例1


4

社員113311つの部門、社員2211つの部門を作ると、 部門の数は22つ、異なる部門の間の22人の信頼度の総和は22なので、2\*32=42\*3-2=4となる。 スコアを44より大きくする方法はない。


入力例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