Problem:
Score : 300 points

Problem Statement

There are N integers written on a blackboard. The i-th integer is A_i.

Takahashi will repeatedly perform the following operation on these numbers:

Select a pair of integers, A_i and A_j, that have the same parity (that is, both are even or both are odd) and erase them.

Then, write a new integer on the blackboard that is equal to the sum of those integers, A_i+A_j.

Determine whether it is possible to have only one integer on the blackboard.

Constraints

2 ≦ N ≦ 10^5

1 ≦ A_i ≦ 10^9

A_i is an integer.

Input

The input is given from Standard Input in the following format:

N
A_1 A_2 … A_N

Output

If it is possible to have only one integer on the blackboard, print YES. Otherwise, print NO.

Sample Input 1

3
1 2 3

Sample Output 1

YES

It is possible to have only one integer on the blackboard, as follows:

Erase 1 and 3 from the blackboard, then write 4. Now, there are two integers on the blackboard: 2 and 4.

Erase 2 and 4 from the blackboard, then write 6. Now, there is only one integer on the blackboard: 6.

Sample Input 2

5
1 2 3 4 5

Sample Output 2

NO

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

/******************************************
*    AUTHOR:         CHIRAG AGARWAL       *
*    INSTITUITION:   BITS PILANI, PILANI  *
******************************************/
#include <bits/stdc++.h>
using namespace std;
 
typedef long long LL; 
typedef long double LD;
const int MAX=1e5+5;

LL arr[MAX];

int main() 
{	
	int n;
	scanf("%d",&n);
	LL sum=0;
	for(int i=0;i<n;i++)
	{
		scanf("%lld",&arr[i]);
		sum+=arr[i];
	}	
	LL red=(n*1ll*(n+1))/2;
	if(sum%red)
	{
		printf("NO\n");
	}
	else
	{
		LL k=sum/red;
		LL du=0;
	//	printf("%lld\n",k);
	
		for(int i=0;i<n;i++)
		{
			LL dif=arr[(i+1)%n]-arr[i];
			if((k-dif)%n)
			{
				printf("NO\n");
				return 0;
			}
			else
			{
				du+=(k-dif);
			}
		}

		if(du==(n*k))
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}

	return 0;
}