func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class c>   struct rge {     c b, e;   };   template <class c>   rge<c> range(c i, c j) {     return rge<c>{i, j};   }   template <class c>   auto dud(c* x) -> decltype(cerr << *x, 0);   template <class c>   char dud(...);   struct debug {     template <class c>     debug& operator<<(const c&) {       return *this;     }   };   using ll = long long;   using ld = long double;   constexpr int nax = 305;   constexpr int infty = 1000 * 1000 * 1000 + 5;   constexpr int mod = 1000 * 1000 * 1000 + 7;   int n;   vector<vector<int>> wynik;   int jest[nax][nax];   int main() {     scanf( %d , &n);     int i;     for (i = n; i >= 5; i -= 2) {       vector<int> cyk;       for (int j = 1; j < i - 1; j++) {         cyk.push_back(j);       }       const int s = (int)cyk.size();       for (int j = 0; j < s; j++) {         const int k = (j + 1) % s;         if (j == 0) {           wynik.emplace_back();           wynik.back().push_back(i);           wynik.back().push_back(cyk[j]);           wynik.back().push_back(i - 1);           wynik.emplace_back();           wynik.back().push_back(i);           wynik.back().push_back(cyk[k]);           wynik.back().push_back(i - 1);         } else {           wynik.emplace_back();           wynik.back().push_back(i);           wynik.back().push_back(cyk[j]);           wynik.back().push_back(i - 1);           wynik.back().push_back(cyk[k]);         }       }     }     assert(i < 5);     if (i == 4) {       for (int i = 1; i <= 4; i++) {         wynik.emplace_back();         for (int j = 1; j <= 4; j++) {           if (i != j) {             wynik.back().push_back(j);           }         }       }     } else if (i == 3) {       wynik.emplace_back();       wynik.back().push_back(1);       wynik.back().push_back(2);       wynik.back().push_back(3);       wynik.emplace_back();       wynik.back().push_back(1);       wynik.back().push_back(2);       wynik.back().push_back(3);     } else {       assert(false);     }     printf( %d n , (int)wynik.size());     for (const auto& p : wynik) {       const int s = (int)p.size();       assert(s == 3 or s == 4);       printf( %d , s);       for (int i = 0; i < s; i++) {         assert(1 <= p[i] and p[i] <= n);         printf(  %d , p[i]);         jest[p[i]][p[(i + 1) % s]]++;       }       printf(  n );     }     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) {         if (i != j) {           assert(jest[i][j] + jest[j][i] == 2);         }       }     }     return 0;   }   