#CF2127A. 混合 MEX 与最大值

混合 MEX 与最大值

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

题目描述

给定一个由 nn 个非负整数组成的数组 aa。然而,aa 中的某些元素缺失,用 1-1 表示。

我们定义数组 aa的,当且仅当对于每一个 1in21 \le i \le n-2,下式成立:

$$\operatorname{mex}([a_i, a_{i+1}, a_{i+2}]) = \max([a_i, a_{i+1}, a_{i+2}]) - \min([a_i, a_{i+1}, a_{i+2}]) $$

其中 mex(b)\operatorname{mex}(b) 表示集合 bb 的最小排除值(MEX)^{*}

你需要判断是否可以通过将每个 1-1 替换为一个非负整数,使得 aa 变成好的数组。


输入
每个测试点包含多个测试用例。第一行包含一个整数 tt1t5001 \le t \le 500)——测试用例的数量。
每个测试用例的第一行包含一个整数 nn3n1003 \le n \le 100)——数组 aa 的长度。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai100-1 \le a_i \le 100)。ai=1a_i = -1 表示该元素缺失。


输出
对于每个测试用例,如果有可能使 aa 成为好的数组,输出 "YES",否则输出 "NO"
你可以以任意大小写输出答案(例如,"yEs""yes""Yes""YES" 均视为肯定响应)。


示例
输入

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

输出

YES
NO
NO
NO
YES
YES
NO
NO


在第一个测试用例中,我们可以令 a1=a2=a3=1a_1 = a_2 = a_3 = 1。那么:

  • $\operatorname{mex}([a_1, a_2, a_3]) = \operatorname{mex}([1,1,1]) = 0$
  • max([a1,a2,a3])=max([1,1,1])=1\max([a_1, a_2, a_3]) = \max([1,1,1]) = 1
  • min([a1,a2,a3])=min([1,1,1])=1\min([a_1, a_2, a_3]) = \min([1,1,1]) = 1

并且 0=110 = 1 - 1。因此数组 aa 是好的。

在第二个测试用例中,aa 中没有元素缺失。考察:

  • $\operatorname{mex}([a_1, a_2, a_3]) = \max([a_1, a_2, a_3]) - \min([a_1, a_2, a_3])$
  • $\operatorname{mex}([a_2, a_3, a_4]) = \max([a_2, a_3, a_4]) - \min([a_2, a_3, a_4])$

但是
$\operatorname{mex}([a_3, a_4, a_5]) \ne \max([a_3, a_4, a_5]) - \min([a_3, a_4, a_5])$。
因此数组 aa 不可能成为好的。

在第三个测试用例中,a1,a2,a3a_1, a_2, a_3 均未缺失。然而:

  • $\operatorname{mex}([a_1, a_2, a_3]) = \operatorname{mex}([5,5,1]) = 0$
  • max([a1,a2,a3])=max([5,5,1])=5\max([a_1, a_2, a_3]) = \max([5,5,1]) = 5
  • min([a1,a2,a3])=min([5,5,1])=1\min([a_1, a_2, a_3]) = \min([5,5,1]) = 1

并且 0510 \ne 5 - 1。所以无论怎样替换缺失元素,数组 aa 都不可能成为好的。


^{*} 一组整数 b1,b2,,bkb_1, b_2, \dots, b_k 的最小排除值(MEX)定义为不在集合 bb 中出现的最小非负整数 xx。例如,mex([2,2,1])=0\operatorname{mex}([2,2,1]) = 0,因为 00 不在数组中;mex([0,3,1,2])=4\operatorname{mex}([0,3,1,2]) = 4,因为 0,1,2,30,1,2,3 都出现了,而 44 没有出现。