#CF2004F. 构造回文

构造回文

F. 构造回文
时间限制:每个测试点 55
内存限制:512512 兆字节

给你一个由 nn 个整数组成的数组 aa

定义函数 f(b)f(b) 为将数组 bb 变成回文所需的最少操作次数。允许的操作有:

  • 选择相邻的两个元素 bib_ibi+1b_{i+1},删除它们,并用一个等于 (bi+bi+1)(b_i + b_{i+1}) 的元素替换它们;
  • 或者选择一个大于 11 的元素 bi>1b_i > 1,删除它,并用两个正整数 xxyyx>0x > 0y>0y > 0)替换它,使得 x+y=bix + y = b_i

例如,从数组 b=[2,1,3]b = [2,1,3] 出发,可以通过一次操作得到以下数组:[1,1,1,3][1,1,1,3][2,1,1,2][2,1,1,2][3,3][3,3][2,4][2,4][2,1,2,1][2,1,2,1]

请计算 $\displaystyle \sum_{1 \le l \le r \le n} f(a[l..r])$,其中 a[l..r]a[l..r] 表示数组 aa 中从下标 ll 到下标 rr 的子数组。换句话说,求出数组 aa 的所有子数组的 ff 值之和。


输入格式
第一行包含一个整数 tt1t10001 \le t \le 1000)——测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n20001 \le n \le 2000)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1051 \le a_i \le 10^5)。

附加输入限制:所有测试用例的 nn 之和不超过 20002000


输出格式
对于每个测试用例,输出一个整数——数组 aa 的所有子数组的 ff 值之和。


样例输入

4
3
2 1 3
4
1 1 1 1
5
4 2 3 1 5
4
1 2 1 2

样例输出

3
0
14
5