有顶天变~
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

负责守护镇压地震之要石的 \text{比那名居天子} 需要经常处理地震的发生 。

此地由 n 块地面组成,地震导致每块地面发生了不同程度的下降,天子每次释放能力可以将 相邻 的几块地面 抬高相同 的高度。

即每一次操作,可以选择任意的 L,R (1 \le L\le R\le n),对于所有的 i∈[L,R],使得 a_i =a_i +1

天子希望将塌陷的地面补平,你能帮她计算出将地面填平的 最小操作次数 吗。

输入描述:

第一行输入一个整数 T (1 \le T\le 1\times 10^{4}),表示测试组数。

接下来 T 组数据:

每组数据第一行输入一个整数 n (1 \le n\le 1\times 10^{5}),表示地面个数。

第二行输入 n 个整数 a_i (1 \le a_i \le 1\times 10^{9}),表示第 i 块地面的高度。

保证所有测试用例中 n 的总和不超过 10^{5} \sum n \le 10^5

输出描述:

输出 T 行,每行一个整数表示最小操作次数。
示例1

输入

复制
1
6
1 1 4 5 1 4

输出

复制
8

备注:

样例 1 如图:

最终所有地面都变成高度 5,可以证明没有比 8 次更小的值了。