#CF2004F. 构造回文
构造回文
F. 构造回文
时间限制:每个测试点 秒
内存限制: 兆字节
给你一个由 个整数组成的数组 。
定义函数 为将数组 变成回文所需的最少操作次数。允许的操作有:
- 选择相邻的两个元素 和 ,删除它们,并用一个等于 的元素替换它们;
- 或者选择一个大于 的元素 ,删除它,并用两个正整数 和 (,)替换它,使得 。
例如,从数组 出发,可以通过一次操作得到以下数组:、、、 或 。
请计算 $\displaystyle \sum_{1 \le l \le r \le n} f(a[l..r])$,其中 表示数组 中从下标 到下标 的子数组。换句话说,求出数组 的所有子数组的 值之和。
输入格式
第一行包含一个整数 ()——测试用例的数量。
每个测试用例的第一行包含一个整数 ()。
第二行包含 个整数 ()。
附加输入限制:所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数——数组 的所有子数组的 值之和。
样例输入
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