Digital Deletion
题号:NC308988
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有个长度为 n 的序列 a,另有一个空的数字集合 S

\hspace{15pt}这天小苯突发奇想,将 a 的所有子序列的和都加入了 S。(包括空子序列的和,视为 0。)

\hspace{15pt}接着他求出了集合 S\rm MEX,记作 m,他发现如果一开始从 a 中删除一些数字,也并不会影响 m 的值。

\hspace{15pt}因此你的任务就是,帮助他计算一下一开始最多从 a 中删除多少个数字,能使得经过上述操作后仍然不影响 m 的值(也有可能无法删除任何数字,此时输出 0 即可)。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\ (1\leqq T\leqq 10^5) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行一个正整数 n\ (1 \leqq n \leqq 2 \times 10^5),表示序列 a 的长度。
\hspace{15pt}第二行 n 个整数 a_i\ (0 \leqq a_i \leqq 10^9),表示序列 a

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 3 \times 10^5

输出描述:

对于每组测试数据:

\hspace{15pt}在单独的一行输出一个整数,表示最多能删除多少个数字,使得不影响 m 的值。
示例1

输入

复制
2
4
2 3 4 6
3
1 1 1

输出

复制
4
0

说明

\hspace{15pt}对于第一组测试数据,由于 m=1,即使删掉所有数字后,空数组的空子序列加入集合 S 后,m 仍然不会发生改变,因此可以把所有数字全部删掉,输出 4