#D0958. 环形配对

环形配对

环形配对

题目描述

33DAI 把 nn 堆糖果摆成一圈,第 ii 堆有 aia_i 颗。注意第 11 堆和第 nn 堆也是相邻的。

Tom 每次可以选圈上相邻的两堆,各拿走 11 颗糖(也就是让这两堆同时减 11)。如果选中的两堆里有任何一堆已经空了,这一步就不能做。

请问 Tom 能不能把所有糖果都拿走(也就是让所有 aia_i 都变成 00)?

能就输出 YES,不能就输出 NO。

输入格式

第一行一个整数 nn。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n。

输出格式

一行,YES 或 NO。

样例

3
2 3 3
YES
4
1 2 3 4
NO

样例说明

样例 1: a=[2,3,3]a=[2,3,3]。三堆正好围成一圈,相邻对是 (1,2),(2,3),(3,1)(1,2),(2,3),(3,1),可以这样操作:

  • 选第 1,21,2 堆做 11 次:[2,3,3]→[1,2,3][2,3,3]\to[1,2,3];
  • 选第 2,32,3 堆做 22 次:[1,2,3]→[1,0,1][1,2,3]\to[1,0,1];
  • 选第 3,13,1 堆做 11 次:[1,0,1]→[0,0,0][1,0,1]\to[0,0,0]。

所有糖果都被拿走了,所以输出 YES。

样例 2: a=[1,2,3,4]a=[1,2,3,4]。不存在合法的操作方案能把四堆同时清空,所以输出 NO。

数据范围

对于全部数据,3≤n≤1053\le n\le 10^{5},0≤ai≤1090\le a_i\le 10^{9}。

子任务 分值 限制
1 3030 n≤10n\le 10
2 n≤1000n\le 1000
3 4040 3≤n≤1053\le n\le 10^{5}

每个子任务的计分方式为 min(取该子任务中所有测试点的最低分)。

子任务之间存在依赖:子任务 2 依赖子任务 1,子任务 3 依赖子任务 2。即只有通过了所依赖的子任务,该子任务才能得分。