func_code_string: #include <bits/stdc++.h>   const int INF_INT = 0x3f3f3f3f;   const long long INF_LL = 0x7f7f7f7f;   const int MOD = 1e9 + 7;   const double eps = 1e-10;   const double pi = acos(-1);   using namespace std;   int n;   int a[30];   int vis[30];   bool dfs(int root, int cnt, int son) {     if (root == n + 1) return true;     if (cnt + 1 == a[root]) {       if (son != 1 && dfs(root + 1, 0, 0)) return true;       return false;     }     int same = 0;     for (int i = 1; i <= n; i++) {       if (!vis[i] && cnt + a[i] < a[root] && a[i] != same) {         same = a[i];         vis[i] = 1;         if (dfs(root, cnt + a[i], son + 1)) return true;         vis[i] = 0;       }     }     return false;   }   int main(int argc, char const *argv[]) {     scanf( %d , &n);     for (int i = 1; i <= n; i++) scanf( %d , &a[i]);     sort(a + 1, a + 1 + n);     memset(vis, 0, sizeof(vis));     if (a[n] != n)       puts( NO );     else {       if (dfs(1, 0, 0))         puts( YES );       else         puts( NO );     }     return 0;   }   