/*
一开始并没有想清楚这题该怎么解出,走了许多弯路
我一开始以为此题的关键在于数组中的偶数元素,如果偶元素的后面还是偶元素,前一个偶元素就能当作0来处理;
后来又想,是不是前后两个数字,分别减去两者中的最小值
然后想来许多许多的角度
最后发现...还是我自己想得太多了,这题其实没那么麻烦,无非是,遇到偶数取余,遇到零判断下一个,若遇到奇数,先判断后面还有没有元素,没有则输出"NO"并退出循环,否则判断其后面是不是0.是0则输出"NO"并退出循环,否则当前判断的数组元素置0(之所以为0.是因为自减以后,肯定变成偶数了,偶数有一种优惠可用,那天的绝对可以买到).而它后面的元素自减...如此循环往复,直到遍历数组中所有的元素
*/
#include <bits/stdc++.h>
const int N = 200005;
int num[N];
using namespace std;
int main()
{
int n;
while (cin >> n)
{
bool jud = true;
for (int i = 0; i < n; i++)
cin >> num[i];
for (int i = 0; i < n; i++)
{
if (num[i] >= 2)
num[i] %= 2;
if (num[i] == 0)
continue;
if (i == n - 1)
{
jud = false; break;
}
else
{
if (num[i + 1])
{
num[i + 1]--;
num[i] = 0;
}
else
{
jud = false; break;
}
}
}
if (jud) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}