#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
map<pair<int, long long>, bool> vis;
map<pair<int, long long>, int> memo;
int grundy(int x, long long mask) {
  for (int i = 61; i > x; i--) {
    if ((mask >> i) & 1) mask ^= (1ll << i);
  }
  if (vis[{x, mask}]) return memo[{x, mask}];
  vis[{x, mask}] = 1;
  set<int> s;
  for (int i = 1; i <= x; i++) {
    if ((mask >> i) & 1) {
      s.insert(grundy(x - i, mask ^ (1ll << i)));
    }
  }
  int res = 0;
  while (s.find(res) != s.end()) res++;
  return memo[{x, mask}] = res;
}
int n;
int s[MAXN];
int main() {
  scanf("%d", &n);
  int res = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", s + i);
    res ^= grundy(s[i], (1ll << 61) - 1);
  }
  if (res)
    puts("NO");
  else
    puts("YES");
  return 0;
}
