func_code_string: #include <bits/stdc++.h>   #pragma GCC target( avx2 )   #pragma GCC optimization( O3 )   #pragma GCC optimization( unroll-loops )   using namespace std;   template <class T1, class T2>   ostream &operator<<(ostream &os, const pair<T1, T2> &p) {     os <<  {  << p.first <<  ,  << p.second <<  } ;     return os;   }   const int N = 3e5 + 5;   const int oo = 1e9 + 7;   int a[N];   int32_t main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int n;     cin >> n;     int tot1 = 0;     for (int i = 1; i <= n; i++) {       cin >> a[i];       tot1 += a[i];     }     bool res = a[1];     for (int i = 2; i <= n; i++) {       res = !res or a[i];     }     if (res == 0) {       cout <<  YES n  << a[1];       for (int i = 2; i <= n; i++) cout <<  ->  << a[i];       cout <<   n ;     } else if (a[n] == 1 or n <= 2 or (a[n - 2] == 1 and tot1 == n - 2)) {       cout <<  NO n ;     } else if (a[n - 2] == 0) {       cout <<  YES n  << a[1];       for (int i = 2; i <= n - 3; i++) cout <<  ->  << a[i];       cout <<  ->(  << a[n - 2] <<  ->  << a[n - 1] <<  )->  << a[n] <<   n ;     } else {       int zero = -1;       for (int i = n - 3; i >= 1; i--)         if (a[i] == 0) {           zero = i;           break;         }       assert(zero != -1);       cout <<  YES n ;       if (zero > 1) {         cout << a[1];         for (int i = 2; i < zero; i++) {           cout <<  ->  << a[i];         }         cout <<  -> ;       }       cout <<  (  << a[zero] <<  ->((  << a[zero + 1];       for (int i = zero + 2; i <= n - 2; i++) cout <<  ->  << a[i];       cout <<  )->  << a[n - 1] <<  ))->  << a[n] <<   n ;     }   }   