好数组
题号:NC298866
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

Bingbon 有一个长度为 n 且仅由 0 和 1 组成的环形数组 \{a_0,a_1,\cdots,a_{n-1}\}

他定义一个数组是好数组当且仅当这个数组单调不减。

现在他想要选取一个位置 i,断开 a_ia_{(i+1)\mod{n}} ,问断开的数组 \{a_{(i+1)\mod{n}},a_{(i+2)\mod{n}},\cdots,a_i\}能否是一个好数组。

环形数组:首尾相连的数组,即 a_{n-1} 的下一个位置是 a_0

一个数组被称为单调不减,当且仅当对于数组中任意相邻的两个元素,后面的元素不小于前面的元素。

输入描述:

本题输入包含多组数据。
第一行一个整数 T(1\leqq T\leqq 10^4),表示测试数据组数,对于每组数据格式如下:
    第一行一个整数 n(2\leqq n\leqq 10^5),表示数组长度。
    第二行 n 个整数,表示 \{a_0,a_1,\cdots,a_{n-1}\}
单个测试文件保证 n 之和小于等于 10^5

输出描述:

对于每组数据输出一个字符串,若可以变成好数组输出 YES,否则输出 NO。
示例1

输入

复制
4
3
1 1 0
2
1 0
2
0 1
4
1 0 1 0

输出

复制
YES
YES
YES
NO