5621 - 提高:数列分段

有一个长度为n的数子序列,你现在要做的是,将数字序列尽可能小的分割成若干个连续且不相交的段,使得段中的第一个数字或者最后一个数字是该段的长度。

输入

本题含有多组测试数据。 第一行一个正整数T (1≤T≤1000),表示测试数据的组数。 接下来对于每组测试数据,输出包含两行。 第一行一个正整数n (2≤n≤200000),表示数组a 的长度。 第二行n 个整数ai (1≤ai ≤n),表示数组a。 (保证所有测试数据中,n 的总和不超过 200000。)

输出

对于每组测试数据,如果可以将数组分成若干个段以满足题意,则输出一行一个正整数表示最少分成的段数,否则输出一行一个 −1 即可

样例

输入

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

输出

2
4
2

提示

对于第一组测试数据,可以分为{1,2,3} 和{2,1} 两段, 其中第一段的最后一个数字3 可以作为第一段的长度,第二段的第一个数字2 可以作为第二段的长度。

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题