#CF2041C. 立方体

立方体

C. 立方体

  • 时间限制:每个测试点 3 秒
  • 内存限制:1024 MB

你有一个 n×n×nn \times n \times n 的三维立方体,里面包含 n3n^3 个整数。
你需要从中选出 nn 个数,使得它们的和尽可能小。

但是,禁止选择位于同一平面内的两个数。具体来说,如果我们用三个笛卡尔坐标 (x,y,z)(x,y,z) 来表示立方体中的位置,则选择位置 (x,y,z)(x,y,z)(x,y,z)(x',y',z') 的两个数是禁止的,如果:

x=xx = x'y=yy = y'z=zz = z'

换句话说,不允许有两个选出的数在任何一维上坐标相同,相当于选出的 nn 个数的 xx 坐标互不相同,yy 坐标互不相同,zz 坐标互不相同(即构成了一个 nn 皇后问题在三维中的变体,但这里皇后是所有格点)。


输入格式

第一行是一个整数 nn
接下来有 n2n^2 行,每行有 nn 个整数。

这些行对应立方体的每一层(按 xxyy 顺序给出)。
更准确地说,对于每个 (x,y,z)(x, y, z)1x,y,zn1 \le x, y, z \le n),位于位置 (x,y,z)(x, y, z) 的数出现在:

  • 行号 = (x1)×n+y(x-1) \times n + y
  • 该行的第 zz 个数

约束:

  • 2n122 \le n \le 12
  • 立方体内所有数均为 002×1072 \times 10^7 之间的整数。

输出格式

输出一个整数,表示符合上述规则选出的 nn 个数的最小可能和。


样例

输入

3
1 2 3
4 5 6
7 8 9
1 1 1
2 2 2
3 3 3
4 3 0
2 1 4
9 8 9

输出

5