#CF2049A. MEX 消除

MEX 消除

A. MEX 消除

单次测试时间限制11内存限制256256 兆字节

巨龙埃维里尔潜入了巫师的城堡,发现了一个神秘的装置,贪玩的它忍不住摆弄(破坏)了起来……

巨龙埃维里尔找到了一个长度为 nn 的非负整数数组 a1,a2,,ana_1,a_2,\dots,a_n

在一次操作中,它可以选择数组 aa 的一个非空子数组^\ast bb,并将这个子数组替换为整数 mex(b)\operatorname{mex}(b)^\dagger。它可以使用任意次数该操作,最终让数组 aa 中只包含 00。题目保证在给定限制下,这一目标总是可以达成。

请问完成目标最少需要多少次操作?


^\ast 若数组 cc 可以通过从数组 dd 的开头删除若干(可以是 00 个或全部)元素、从末尾删除若干(可以是 00 个或全部)元素得到,则称 ccdd 的子数组。

^\dagger 整数集合 f1,f2,,fkf_1,f_2,\dots,f_k最小未出现值(MEX),定义为没有出现在集合中的最小非负整数


输入格式

每个测试文件包含多组测试数据。 第一行输入一个整数 tt1t2001 \le t \le 200),表示测试用例的数量。

每组测试数据的格式如下: 第一行输入一个整数 nn1n501 \le n \le 50),表示数组的长度。 第二行输入 nn 个空格分隔的整数 a1,a2,,ana_1,a_2,\dots,a_n0ai1000 \le a_i \le 100)。

保证所有测试用例的 nn 之和不超过 500500

输出格式

对于每组测试数据,输出一行一个整数,表示将数组变为全 00 所需的最少操作次数。


样例输入

10
4
0 1 2 3
6
0 0 0 0 0 0
5
1 0 1 0 1
5
3 1 4 1 5
4
3 2 1 0
7
9 100 0 89 12 2 3
4
0 3 9 0
7
0 7 0 2 0 7 0
1
0
2
0 1

样例输出

1
0
2
1
1
2
1
2
0
1

样例说明

在第一个测试用例中,埃维里尔可以选择子数组 b=[1,2,3]b=[1,2,3],将其替换为 mex(1,2,3)=0\operatorname{mex}(1,2,3)=0。数组从 [0,1,2,3][0,1,2,3] 变为 [0,0][0,0](选中的子数组已标注下划线)。因此答案为 11

在第二个测试用例中,数组已经全为 00,无需任何操作。

在第三个测试用例中,埃维里尔可以按如下方式变换数组: [1,0,1,0,1][1,2][0][1,0,1,0,1] \to [1,2] \to [0]。 其中 mex(0,1,0,1)=2\operatorname{mex}(0,1,0,1)=2mex(1,2)=0\operatorname{mex}(1,2)=0

在第四个测试用例中,埃维里尔可以选择整个数组作为 bb,将数组 [3,1,4,1,5][3,1,4,1,5] 变为 [0][0]