最大化1
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这天, 小 L 在上课, 他的老师给他出了一道题目, 题目如下:
目前有 n 个人, 他们将会按顺序分成两个队, 接下来, 给出每个人的类型, 类型 1 的人他会在黑板上写下 1, 类型 0 的人他会在黑板上写下 0, 类型 2 的人会 "从众"的写下数字, 请你求出黑板上 最多有多少个 1
"从众": 是指对于 第 i 个人来说, 假设他被分到了第一队, 他这一队除去 i 后目前有 a 个人, 并且有 b 个人写下了 1, 如果  , 那么他也会写下 1, 否则他将会写下 0, 如果他前面没有人, 那么他也会写下 1

按顺序分队的意思是, 你现在需要将 n 个人分成左右两队, 从第 1个人到第 n 个人, 对于每个人, 你可以将他分到左边, 或者右边
注意: 只要分好队后, 答案就定了, 怎么写不重要, 最后注明, 分队的顺序是任意的, 你只要不变任意两个人的前后顺序即可, 其次 

输入描述:

第一行包含一个整数 T 
第二行包含一个整数 n()
第三行包含 n 个整数, 每个整数表示每个人属于的类型

输出描述:

T 行, 每行一个整数表示黑板上最多有多少个 1
示例1

输入

复制
2
5
1 1 0 0 1
5
1 1 0 0 2

输出

复制
3
3