func_code_string: #include <bits/stdc++.h>   using namespace std;   int mex(set<int> s) {     int v = 0;     while (s.count(v) > 0) v++;     return v;   }   int g[65]{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};   const int MAXN = 1000007;   int s[MAXN];   map<pair<int, long long>, int> dp;   int grundy(pair<int, long long> s) {     if (dp.find(s) != dp.end()) return dp[s];     long long mask = s.second;     int &res = dp[s];     set<int> S;     for (int i = 1; i <= 60; i++) {       if (!(mask & (1ll << i)) && s.first >= i) {         S.insert(grundy(make_pair(s.first - i, (mask | (1ll << i)))));       }     }     while (S.count(res) > 0) res++;     return res;   }   int main() {     int n;     scanf( %d , &n);     for (int i = 0; i < n; i++) {       scanf( %d , &s[i]);     }     if (n == 1)       printf( NO n );     else {       int XOR = 0;       for (int i = 0; i < n; i++) {         XOR ^= grundy(make_pair(s[i], 0));       }       if (XOR == 0)         printf( YES n );       else         printf( NO n );     }     return 0;   }   