#CF2062B. 钟表装置

钟表装置

题目描述

每次测试的时间限制:1.51.5 秒 每次测试的内存限制:512512 兆字节

你有一排 nn 个时钟,第 ii 个时钟的初始时间为 aia_i。每一秒按顺序发生以下事件:

每个时钟的时间减少 11。如果任意一个时钟的时间变为 00,你立即失败。

你可以选择移动到相邻的时钟,或者停留在当前所在的时钟。

你可以将当前所在时钟的时间重置回其初始值 aia_i

注意以上事件按顺序发生。如果在某一秒中某个时钟的时间变为 00,即使你可以在这一秒内移动到该时钟并重置它,你仍然会失败。

你可以从任意一个时钟开始。判断是否存在一种方式,使得这个过程可以无限持续下去而不失败。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 测试用例的数量。

对于每个测试用例,第一行包含一个整数 nn2n51052 \le n \le 5 \cdot 10^5)—— 时钟的数量。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9)—— 每个时钟的初始时间。

保证所有测试用例的 nn 之和不超过 51055 \cdot 10^5

输出格式

对于每个测试用例,如果存在无限持续的方法,输出 "YES",否则输出 "NO"。

你可以以任何大小写输出 "YES" 和 "NO"(例如,"yEs"、"yes" 和 "Yes" 都会被识别为肯定回答)。

5
2
4 10
2
2 2
3
4 10 5
3
5 3 5
5
12 13 25 17 30
YES
NO
NO
YES
YES

注意

在第一个测试用例中,你可以在两个时钟之间来回移动,反复重置它们。

在第三个测试用例中,假设你从时钟 11 开始并采用以下策略:

初始:a=[4,10,5]a = [4, 10, 5]

第一秒:时间变为 [3,9,4][3, 9, 4]。你移动到时钟 22 并重置它,得到 [3,10,4][3, 10, 4]

第二秒:时间变为 [2,9,3][2, 9, 3]。你移动到时钟 33 并重置它,得到 [2,9,5][2, 9, 5]

第三秒:时间变为 [1,8,4][1, 8, 4]。你移动到时钟 22 并重置它,得到 [1,10,4][1, 10, 4]

第四秒:时间变为 [0,9,3][0, 9, 3]。你移动到时钟 11,但因为 a1a_1 已经变为 00,你失败。

可以证明,没有其他策略能使这个过程无限持续下去。