func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 2147483647;   const long long LLINF = 9223372036854775807LL;   const int ST = 100010;   const int ST1 = 1000010;   const long long MOD = 1000000007;   long long ABS(long long a) {     if (a < 0)       return a * (-1);     else       return a;   }   int mas[30];   bool ans = true;   void bad() {     cout <<  NO ;     exit(0);   }   vector<vector<int> > ppp;   int sz = 0;   void per(vector<int> &t) {     if ((int)((t).size()) == sz) {       ppp.push_back(t);     } else {       t.push_back(0);       per(t);       t.pop_back();       t.push_back(1);       per(t);       t.pop_back();     }   }   void per(vector<int> val, int ed, vector<int> zap) {     if ((int)((val).size()) == 0) {       if (ed == 0) {         cout <<  YES ;         exit(0);       } else         return;     }     vector<vector<int> > pp;     vector<int> em;     sz = (int)((zap).size());     ppp.clear();     per(em);     pp = ppp;     int tek = val[(int)((val).size()) - 1] - 1;     val.pop_back();     int ost = 0;     for (int i = 0; i < (int)((pp).size()); i++) {       vector<int> next;       next.push_back(tek + 1);       ost = 0;       int kk = 0;       for (int j = 0; j < (int)((pp[i]).size()); j++) {         if (pp[i][j] == 1) {           ost += zap[j];           kk++;         } else           next.push_back(zap[j]);       }       if (ost <= tek) {         int s = tek - ost;         if (s > ed) continue;         kk += s;         if (kk == 1) continue;         per(val, ed - s, next);       }     }   }   int main() {     int n;     cin >> n;     if (n == 1) {       cout <<  YES ;       return 0;     }     int kk = 0;     for (int i = 0; i < n; i++) {       cin >> mas[i];       if (mas[i] == 2) bad();       if (mas[i] == 1) kk++;     }     sort(mas, mas + n);     int mn = n / 2;     if (kk < mn) bad();     vector<int> t;     int nol = 0;     for (int i = 0; i < n; i++)       if (mas[i] != 1)         t.push_back(mas[i]);       else         nol++;     vector<int> em;     reverse(t.begin(), t.end());     per(t, nol, em);     cout <<  NO ;     return 0;   }   