func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, c[25], coin[25];   int ans = 0;   bool can;   int p_b;   bool good() {     int cnt = 0;     for (int i = 0; i < 25; i++) cnt += coin[i];     return cnt == 1;   }   void rec(int s, int r, int p) {     if (r == 1) {       if (c[p] > 1) coin[c[p]]++;       p++;       if (p < n) r = c[p];       s = 1;     }     if (p == n && good()) can = true;     for (int i = s; i < c[p] - 1; i++) {       for (int j = 0; j <= coin[i]; j++) {         if (r - i * j >= 1) {           coin[i] -= j;           rec(i + 1, r - i * j, p);           coin[i] += j;         }         if (can) return;       }     }     if (r == 1) {       p--;       if (c[p] > 1) coin[c[p]]--;     }   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) {       scanf( %d , &c[i]);       if (c[i] == 1) coin[1]++;     }     sort(c, c + n);     int start_pos = 0;     for (int i = 0; i < n; i++)       if (c[i] != 1) {         start_pos = i;         break;       }     rec(1, c[start_pos], start_pos);     if (can) {       cout <<  YES ;     } else       cout <<  NO ;     return 0;   }   