#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;   }   