#503. 直指左下

直指左下

问题描述

考虑一个数组 a1,…,ana_1,…,a_n 。最初,每个 ii 都有 ai=0a_i=0 。

你可以进行以下形式的运算。

  • 选择一个大于 min(a)min(a) 的整数 xx 。
  • 那么, ii 就被定义为 ai<xa_i<x 的最小下标。换句话说, ii 是介于 11 和 nn 之间的唯一整数,使得每个 1≤j≤i−11≤j≤i−1 都有 ai<xa_i<x 和 aj≥xa_j≥x 。
  • 最后, ai+=xa_i += x 。

例如,如果 a=[6,8,2,1]a=[6,8,2,1] 选择了 x=6x=6 ,那么 ii 就等于 33 (因为 a1≥6a_1≥6 、a2≥6a_2≥6 和 a3<6a_3<6 ), aa 就变成了 [6,8,8,1][6,8,8,1] 。

你可以进行任意多的操作。你能找到目标数组 b1,…,bnb_1,…,b_n 吗?

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt ( 1≤t≤100001≤t≤10000 )。测试用例说明如下。

每个测试用例的第一行都包含一个整数 nn ( 2≤n≤2000002≤n≤200000 )。

每个测试用例的第二行包含 nn 个整数 b1,b2,…,bnb_1,b_2,…,b_n ( 1≤bi≤1091 \le b_i \le 10^9 )。

所有测试用例中 nn 的总和不超过 200000200000 。

输出格式

对于每个测试用例,如果能到达目标数组,则打印 YES,否则打印 NO。

样例输入

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

样例输出

YES
NO
NO
YES