#CF2128C. 最左小于

最左小于

每次测试时间限制:22
内存限制:256256 兆字节
题目描述 考虑一个数组 a1,,ana_1, \dots, a_n。初始时,每个 ai=0a_i = 0

你可以执行以下形式的操作:

  1. 选择一个整数 xx,满足 x>min(a)x > \min(a)
  2. 定义 ii 为满足 ai<xa_i < x 的最小下标。换句话说,ii11nn 之间唯一的整数,使得 ai<xa_i < x 并且对任意 1ji11 \le j \le i-1ajxa_j \ge x
  3. 最后,将 aia_i 增加 xx

例如,如果 a=[6,8,2,1]a = [6,8,2,1] 且你选择 x=6x = 6,那么 ii 将等于 33(因为 a16a_1 \ge 6a26a_2 \ge 6a3<6a_3 < 6),操作后 aa 变为 [6,8,8,1][6,8,8,1]

你可以进行任意多次操作。问:能否达到目标数组 b1,,bnb_1, \dots, b_n


输入
每个测试点包含多个测试用例。第一行包含一个整数 tt1t100001 \le t \le 10000)——测试用例的数量。
每个测试用例的第一行包含一个整数 nn2n2000002 \le n \le 200000)。
第二行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n1bi1091 \le b_i \le 10^9)。
所有测试用例的 nn 之和不超过 200000200000


输出
对于每个测试用例,如果可以达到目标数组,输出 "YES",否则输出 "NO"
你可以以任意大小写输出答案(例如,"yEs""yes""Yes""YES" 均视为肯定响应)。


示例
输入

4
4
5 6 1 1
3
3 1 2
3
40 60 90
2
1 1

输出

YES
NO
NO
YES

注释
在第一个测试用例中,我们可以执行以下操作序列:

  • 选择 x=2x=2aa 变为 [2,0,0,0][2,0,0,0]
  • 选择 x=2x=2aa 变为 [2,2,0,0][2,2,0,0]
  • 选择 x=3x=3aa 变为 [5,2,0,0][5,2,0,0]
  • 选择 x=4x=4aa 变为 [5,6,0,0][5,6,0,0]
  • 选择 x=1x=1aa 变为 [5,6,1,0][5,6,1,0]
  • 选择 x=1x=1aa 变为 [5,6,1,1][5,6,1,1]

在第二个测试用例中,可以证明无法达到 [3,1,2][3,1,2]