题目描述
给定一个初始包含 n 个整数的数组 a。每次操作,你必须执行以下步骤:
- 选择一个位置 i,满足 1<i≤∣a∣ 且 ai=∣a∣+1−i,其中 ∣a∣ 表示当前数组 a 的长度。
- 在 a 的末尾追加 i−1 个零。
你可以进行任意多次这样的操作。请问,经过若干次操作后,数组 a 的最大可能长度是多少?
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 t(1≤t≤100),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤3⋅105),表示数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤1012)
保证所有测试用例中 n 的总和不超过 3⋅105。
输出格式
对于每个测试用例,输出一个整数,表示经过若干次操作后数组 a 的最大可能长度。
样例
4
5
2 4 6 2 5
5
5 4 4 5 1
4
6 8 2 3
1
1
10
11
10
1
在第一个测试用例中,我们可以先选择 i=4,因为 a4=5+1−4=2。此时数组变为 [2,4,6,2,5,0,0,0]。接着可以选择 i=3,因为 a3=8+1−3=6。此时数组变为 [2,4,6,2,5,0,0,0,0,0],长度为 10。可以证明,没有其他操作序列能使最终数组更长。
在第二个测试用例中,可以依次选择 i=2,然后 i=3,再然后 i=4。最终数组为 [5,4,4,5,1,0,0,0,0,0,0],长度为 11。