func_code_string: #include <bits/stdc++.h>   using namespace std;   struct elem {     int le, num, ri;     elem() {}     elem(int inle, int innum, int inri) {       le = inle;       num = innum;       ri = inri;     }   };   elem operator+(elem e1, elem e2) {     return elem(e1.le, e1.num + e2.num + (e1.ri and e2.le ? 1 : 0), e2.ri);   }   vector<elem> genera(int n) {     vector<elem> v;     for (int i = 0; i + i <= n; i++) v.push_back(elem(0, i, 0));     for (int i = 0; i + i + 1 <= n; i++) {       v.push_back(elem(0, i, 1));       v.push_back(elem(1, i, 0));     }     for (int i = 0; i + i + 2 <= n; i++) v.push_back(elem(1, i, 1));     return v;   }   bool puede(elem e1, elem e2, int k, int x) {     for (int i = 3; i <= k; i++) {       elem nexte1 = e2;       elem nexte2 = e1 + e2;       e1 = nexte1;       e2 = nexte2;       if (e2.num > x) return false;     }     return e2.num == x;   }   void escribe(elem e, int n) {     if (e.le) cout <<  C ;     for (int i = 0; i < e.num; i++) cout <<  AC ;     for (int i = e.le + e.ri + 2 * e.num; i < n; i++) cout <<  B ;     if (e.ri) cout <<  A ;     cout << endl;   }   int main() {     int k, x, n, m;     cin >> k >> x >> n >> m;     vector<elem> v1 = genera(n);     vector<elem> v2 = genera(m);     for (int i = 0; i < int(v1.size()); i++) {       for (int j = 0; j < int(v2.size()); j++) {         if (puede(v1[i], v2[j], k, x)) {           escribe(v1[i], n);           escribe(v2[j], m);           exit(0);         }       }     }     cout <<  Happy new year!  << endl;   }   