#CF2021D. 老板,口渴了

老板,口渴了


D. 老板,口渴了

时间限制:每个测试 22
内存限制256256 MB

Pak Chanek 有一个朋友,在食堂里开了一家饮料摊。这位朋友将连续 nn 天售卖饮料,天数编号为第 11 天到第 nn 天。共有 mm 种饮料,编号为 11mm

在特定的一天售卖某种饮料所获得的利润可能会有所不同。在第 ii 天,售卖第 jj 种饮料的预计利润为 Ai,jA_{i,j}。注意 Ai,jA_{i,j} 可能为负数,这意味着售卖该饮料实际上会造成亏损。

Pak Chanek 想要帮助他的朋友规划这 nn 天的销售。在第 ii 天,Pak Chanek 必须选择至少售卖一种饮料。此外,某一天售卖的饮料类型必须构成一个子数组。换句话说,在每一天,Pak Chanek 会选择两个下标 iijj,满足 1ijm1 \le i \le j \le m,然后售卖所有介于 iijj 之间(包含两端)的饮料类型。

然而,为了让前一天的顾客能够继续光顾,第 ii 天(i>1i > 1)售卖的饮料类型选择必须满足以下条件:

  • ii 天售卖的饮料中,至少有一种也在第 i1i-1 天售卖过;
  • ii 天售卖的饮料中,至少有一种在第 i1i-1 天没有售卖过。

每天的利润是当天售卖的所有饮料类型的利润之和。整个销售计划的总利润是 nn 天利润的总和。如果 Pak Chanek 最优地规划销售,他能获得的最大总利润是多少?


输入格式

每个测试包含多个测试用例。第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nnmm1n21051 \le n \le 2 \cdot 10^53m21053 \le m \le 2 \cdot 10^5nm2105n \cdot m \le 2 \cdot 10^5),分别表示网格的行数和列数。

接下来的 nn 行,每行包含 mm 个整数,其中第 ii 行包含整数 Ai,1,Ai,2,,Ai,mA_{i,1}, A_{i,2}, \dots, A_{i,m}109Ai,j109-10^9 \le A_{i,j} \le 10^9),表示第 ii 天每种饮料的预计利润。

保证所有测试用例的 nmn \cdot m 之和不超过 21052 \cdot 10^5


输出格式

对于每个测试用例,输出一个整数:Pak Chanek 能获得的最大利润。


示例

输入

1
3 6
79 20 49 5 -1000 500
-105 9 109 24 -98 -499
14 47 12 39 23 50

输出

475

样例解释

以下是 Pak Chanek 的最优计划:

  • 11 天,Pak Chanek 售卖饮料类型 1133,获得利润 79+20+49=14879 + 20 + 49 = 148
  • 22 天,Pak Chanek 售卖饮料类型 2244,获得利润 9+109+24=1429 + 109 + 24 = 142
  • 33 天,Pak Chanek 售卖饮料类型 1166,获得利润 185185

因此,Pak Chanek 计划的总利润为 148+142+185=475148 + 142 + 185 = 475