#jag2017summerday3e. [jag2017summer_day3_e]Route Calculator

[jag2017summer_day3_e]Route Calculator

问题描述

你有一个 HHWW 列的网格。H+WH + W 是偶数。我们用 (i,j)(i, j) 表示从上往下第 ii 行、从左往右第 jj 列的单元格。在任何单元格 (i,j)(i, j) 中,如果 i+ji + j 是偶数,则写入一个介于 1199 之间的整数,如果 i+ji + j 是奇数,则写入 +*

你可以通过从 (1,1)(1,1) 移动右边或向下 H+W2H + W - 2 次,将你经过的所有单元格中的字符按顺序连接起来,得到一个数学表达式。你的任务是通过从 (1,1)(1, 1)(H,W)(H, W) 选择任意路径,使得计算得到的数学表达式的值最大化。如果最大值小于等于 101510^{15},则输出该值。否则,输出 1-1


输入

输入包含一个测试用例,格式如下所示。

HH WW a1,1a_{1,1} \cdots a1,Wa_{1,W} \ldots aH,1a_{H,1} \cdots aH,Wa_{H,W}

第一行包含两个整数 HHWW (1H,W501 \le H, W \le 50),保证 H+WH + W 是偶数。接下来的 HH 行表示网格中的字符。ai,ja_{i,j} 表示单元格 (i,j)(i,j) 中的字符。在任何单元格 (i,j)(i, j) 中,如果 i+ji + j 是偶数,则写入一个介于 1199 之间的整数,如果 i+ji + j 是奇数,则写入 +*

输出

输出一个整数,表示答案。


样例输入 1

3 3
1+2
+9*
1*5

样例输出 1

46

通过经过以下单元格,可以得到最大值:(1,1)(1,1), (2,1)(2,1), (2,2)(2,2), (2,3)(2,3), (3,3)(3,3)


样例输入 2

1 31
9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9

样例输出 2

-1

你可以得到 9169^{16},但它太大了。


样例输入 3

5 5
2+2+1
+1+1+
1+2+2
+1+1+
1+1+2

样例输出 3

10

样例输入 4

9 7
8+9*4*8
*5*2+3+
1*3*2*2
*5*1+9+
1+2*2*2
*3*6*2*
7*7+6*5
*5+7*2+
3+3*6+8

样例输出 4

86408