P1150

ParkII

ParkII

HNOI 20072007 Day 11 有一道名为 Park 的题目:给定一个 m×nm\times n 的矩阵,每个格点 (i,j)(i,j) 都有一个可能为负数的权值 V(i,j)V(i,j),要求寻找一条不重复经过任何格点的回路,使回路上所有格点的权值之和最大。

小 C 对这个问题进行了修改:将矩阵中的每个格点视为一个顶点。当且仅当两个格点共享一条边,即在上下或左右方向上相邻时,称它们相邻。

请寻找一条路径,使得路径中连续的两个格点在矩阵中相邻,且每个格点至多经过一次,并最大化路径上所有格点的权值之和。路径可以只包含一个格点。

输入格式

第一行包含两个整数 m,nm,n,表示矩阵的行数和列数。

接下来 mm 行,每行包含 nn 个整数,其中第 ii 行的第 jj 个整数表示 V(i,j)V(i,j)。

输出格式

输出一个整数,表示路径上格点权值之和的最大值。

样例输入

2 3
1 -2 1
1 1 1

样例输出

5

数据范围

  • 对于 30%30\% 的数据,n≤6n\le 6;
  • 对于 100%100\% 的数据,m≤100m\le 100,n≤8n\le 8。

来源与许可

本题题面与测试数据整理自 BZOJ。

样例 1

输入

2 3
1 -2 1
1 1 1

输出

5