子段和
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个序列,问你有没有可能重新排列这个序列使得所有长度小于等于 2 的子区间和不等于 0

输入描述:

第一行一个 n 表示序列长度,接下来一行 n 个数,第 i 个为 a_i,表示序列中的第 i 个数。


输出描述:

一行一个字符串。"YES"表示可能重新排列这个序列使得所有长度小于等于 2 的子区间和不等于 0,反之则输出“NO”。输出不含引号。
示例1

输入

复制
6
34 1345 -3542 -1423 4213 1

输出

复制
YES

说明

不变即可。 
示例2

输入

复制
4
1 1 -1 1

输出

复制
NO

说明

无论怎样排列,-1 总和至少 11 相邻,所以总存在一个和为 0 的长度为 2 的子段。 
示例3

输入

复制
5
1 5 -1 -5 0

输出

复制
NO

说明

0 的存在使得总有一个长度为 1 的子段和为 0