小苯的幼儿园
题号:NC317230
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯班上有 n 个小朋友围成一圈,按顺时针方向编号为 1,2,\dots,n,第 i 个小朋友手上有 a_i 颗糖。
\hspace{15pt}现在,每个小朋友都要同时做出一个选择:
\hspace{23pt}\bullet 不给右边相邻的小朋友糖;
\hspace{23pt}\bullet 给右边相邻的小朋友恰好 1 颗糖。

\hspace{15pt}其中,第 n 个小朋友右边相邻的人是第 1 个小朋友。
\hspace{15pt}当然,如果某个小朋友手上的糖数为 0,那么他不能选择给出一颗糖。
\hspace{15pt}所有人同时完成选择后,每个人收到左边相邻的人给来的糖,也失去自己送出去的糖。

\hspace{15pt}你的任务就是判断:是否存在一种选择方案,使得操作结束后,所有小朋友手上的糖数两两相等。

输入描述:

\hspace{15pt}每个测试文件包含多组测试数据。第一行输入一个整数 T\ (1 \leqq T \leqq 10^4) 代表数据组数,每组测试数据描述如下:

\hspace{23pt}\bullet 第一行输入一个整数 n2 \leqq n \leqq 2 \times 10^5)。
\hspace{23pt}\bullet 第二行输入 n 个整数 a_1,a_2,\dots,a_n0 \leqq a_i \leqq 10^9)。

\hspace{15pt}保证所有测试数据中,n 的总和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组测试数据:
\hspace{23pt}\bullet 如果存在合法方案,输出 "YES";
\hspace{23pt}\bullet 否则输出 "NO"。
示例1

输入

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

输出

复制
YES
NO
NO
YES

说明

\hspace{15pt}第一组数据中,可以让第 2 个小朋友给出 1 颗糖,其余人都不给。操作后糖数变成 1,1,1
\hspace{15pt}第二组数据中,不存在合法方案。
\hspace{15pt}第三组数据中,总糖数为 5,无法让所有人最终都相等,因此答案为 "NO"。
\hspace{15pt}第四组数据中,可以让第 1 个和第 4 个小朋友各给出 1 颗糖,最后每个人手上都变成 1 颗。