func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = (1e6) + 5;   const int M = (60) + 5;   int memo[M][M];   int n, a[N];   int grundy(int n, int last) {     if (n == 0) {       return 0;     }     int &ret = memo[n][last];     if (ret != -1) return ret;     set<int> S;     for (int i = last + 1; i <= n; i += 1) {       S.insert(grundy(n - i, i));     }     ret = 0;     while (S.count(ret)) ret++;     return ret;   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; ++i) {       scanf( %d , a + i);     }     memset(memo, -1, sizeof memo);     int g = 0;     for (int i = 0; i < n; i += 1) {       g ^= grundy(a[i], 0);     }     cout << (g == 0 ?  YES  :  NO ) <<   n ;     return 0;   }   