#705. 说谎者

说谎者

A 说谎者

题目描述

有由 nn 个人组成的群体,其中的一部分人被称为“说谎者”,总是说谎话,另一部分人总是说真话。对于 1in1\leq i \leq n ,第 ii 个人说:“在我们中间至少有 lil_i 个人说谎话。”写一个程序判断人们所说的是矛盾的,还是可能存在的。如果是可能存在的,输出群体中说谎者的数量,如果有多种可能,输出说谎者可能最多的数量。

输入格式

第一行一个整数 t(1t1000)t(1 \leq t \leq 1000) ,代表测试数据的组数。

对于每一组测试数据: 第一行一个整数 n(1n1000)n(1 \leq n \leq 1000) ,代表群体中的人数。

第二行共 nn 个数,以空格隔开,对于 1in1\leq i \leq n,第 ii 个数代表 lil_i0lin0 \leq l_i \leq n

数据保证 n104\displaystyle\sum n \leq 10^4

输出格式

对于每一组测试数据,输出一个整数。如果人们所说的是矛盾的,输出 1-1 ,否则,输出群体中说谎者最多可能存在的数量。

输入输出样例

7
2
1 2
2
2 2
2
0 0
1
1
1
0
5
5 5 3 3 5
6
5 3 6 6 3 5
1
-1
0
-1
0
3
4