#CF1918D. 封锁元素

封锁元素

D. 封锁元素

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

给定一个数组 a1,a2,,ana_1, a_2, \dots, a_n。你的任务是封锁数组中的某些元素,以最小化其代价。假设你封锁了位置为 1b1<b2<<bmn1 \le b_1 < b_2 < \dots < b_m \le n 的元素。那么数组的代价定义为以下两者的最大值:

  • 被封锁元素的总和,即 ab1+ab2++abma_{b_1} + a_{b_2} + \dots + a_{b_m}
  • 将封锁元素移除后,数组被分割成的各个段的最大和。具体来说,是以下 (m+1)(m+1) 个子数组的最大和:[1,b11][1, b_1-1][b1+1,b21][b_1+1, b_2-1]\dots[bm1+1,bm1][b_{m-1}+1, b_m-1][bm+1,n][b_m+1, n](形式为 [x,x1][x, x-1] 的子数组的和视为 00)。

例如,若 n=6n=6,原数组为 [1,4,5,3,3,2][1, 4, 5, 3, 3, 2],且你封锁了位置 2255 上的元素,则数组的代价将是封锁元素的总和(4+3=74+3=7)与各子数组的和(115+3=85+3=822)的最大值,即 max(7,1,8,2)=8\max(7, 1, 8, 2) = 8

你需要输出封锁后数组的最小代价。

输入
第一行包含一个整数 tt1t300001 \le t \le 30000)——查询的数量。

每个测试用例包含两行。第一行包含一个整数 nn1n1051 \le n \le 10^5)——数组 aa 的长度。第二行包含 nn 个元素 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9)——数组 aa

保证所有测试用例的 nn 之和不超过 10510^5

输出
对于每个测试用例,输出一个数——封锁数组的最小代价。

样例
输入

3
6
1 4 5 3 3 2
5
1 2 3 4 5
6
4 1 6 3 10 7

输出

7
5
11

说明
第一个测试用例与题目描述中的数组相同。要获得代价 77,你需要封锁位置 2244 上的元素。在这种情况下,数组的代价计算为以下的最大值:

  • 封锁元素的总和,即 a2+a4=7a_2 + a_4 = 7
  • 将封锁元素移除后数组被分割成的各段的最大和,即 max(a1,a3,a5+a6)=max(1,5,5)=5\max(a_1, a_3, a_5 + a_6) = \max(1, 5, 5) = 5

因此代价为 max(7,5)=7\max(7, 5) = 7

在第二个测试用例中,你可以封锁位置 1144 上的元素。

在第三个测试用例中,要得到答案 1111,你可以封锁位置 2255 上的元素。还有其他方法可以得到这个答案,例如封锁位置 4466