#include <bits/stdc++.h>
#pragma GCC target("sse4,avx")
int getNimb(int c, int64_t forbidden_mask,
            std::map<std::pair<int, int64_t>, int>& map) {
  auto it = map.find(std::pair<int, int64_t>{c, forbidden_mask});
  if (it != map.end()) {
    return it->second;
  }
  if (c == 0) {
    return 0;
  }
  std::vector<int> other;
  for (int i = 1; i <= c; i++) {
    if ((forbidden_mask & (1 << i)) == 0) {
      other.push_back(getNimb(c - i, forbidden_mask + (1 << i), map));
    }
  }
  std::sort(other.begin(), other.end());
  if (other.empty()) {
    return 0;
  }
  int j = 0;
  for (size_t i = 0; i < other.size(); i++) {
    if (j >= other.size() || other[j] != i) {
      map[std::pair<int, int64_t>(c, forbidden_mask)] = i;
      return i;
    }
    while (j < other.size() && other[j] == i) j++;
  }
  map[std::pair<int, int64_t>(c, forbidden_mask)] = other.size();
  return other.size();
}
int data[] = {0, 1, 1, 2, 2, 2, 3, 3,  3,  3,  4,  4,  4, 4, 4, 5,
              5, 5, 5, 5, 5, 6, 6, 6,  6,  6,  6,  6,  7, 7, 7, 7,
              7, 7, 7, 7, 8, 8, 8, 8,  8,  8,  8,  8,  8, 9, 9, 9,
              9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10};
void run(std::istream& in, std::ostream& out) {
  int n;
  in >> n;
  int res = 0;
  for (int i = 0; i < n; i++) {
    int x;
    in >> x;
    res ^= data[x];
  }
  if (res == 0) {
    out << "YES" << std::endl;
  } else {
    out << "NO" << std::endl;
  }
}
int main() {
  std::cin.sync_with_stdio(false);
  std::cin.tie(nullptr);
  run(std::cin, std::cout);
  return 0;
}
