func_code_string: #include <bits/stdc++.h>   int main() {     std::ios_base::sync_with_stdio(false);     std::cin.tie(0);     int n;     std::cin >> n;     std::vector<bool> col(6 * n);     for (int i = 0; i < 3 * n; ++i) {       int x;       std::cin >> x;       --x;       col[x] = true;     }     std::vector<int> sta;     std::vector<std::vector<int>> tmp(6 * n);     std::vector<std::tuple<int, int, int>> tp;     std::vector<bool> bel;     std::vector<std::vector<int>> E(2 * n);     for (int i = 0; i < 6 * n; ++i) {       sta.push_back(i);       if ((int)sta.size() >= 3) {         auto c = std::prev(sta.end()), b = std::prev(c), a = std::prev(b);         if (col[*a] == col[*b] && col[*b] == col[*c]) {           int u = tp.size();           tp.emplace_back(*a, *b, *c);           bel.push_back(col[*a]);           if (a != sta.begin()) {             tmp[*std::prev(a)].push_back(u);           }           E[u].insert(E[u].end(), tmp[*a].begin(), tmp[*a].end());           E[u].insert(E[u].end(), tmp[*b].begin(), tmp[*b].end());           sta.pop_back(), sta.pop_back(), sta.pop_back();         }       }     }     std::vector<int> fa(2 * n, -1), deg(2 * n, 0);     for (int u = 0; u < 2 * n; ++u) {       for (int v : E[u]) {         fa[v] = u;       }       deg[u] = E[u].size();     }     int cnt = 0;     for (int u = 0; u < 2 * n; ++u) {       if (fa[u] == -1 && !bel[u]) {         ++cnt;       }     }     int p = -1;     std::array<std::queue<int>, 2> Q;     for (int u = 0; u < 2 * n; ++u) {       if (!deg[u]) {         Q[bel[u]].push(u);       }     }     std::vector<std::tuple<int, int, int>> ans;     int c = 0;     for (int i = 0; i < 2 * n - 1; ++i) {       c ^= 1;       while (1) {         int u = Q[c].front();         Q[c].pop();         if (fa[u] == -1 && !bel[u]) {           if (cnt == 1) {             p = u;             continue;           }           --cnt;         }         ans.emplace_back(tp[u]);         if (fa[u] != -1) {           --deg[fa[u]];           if (!deg[fa[u]]) {             Q[bel[fa[u]]].push(fa[u]);           }         }         break;       }     }     if (p == -1) {       c ^= 1;       p = Q[c].front();     }     ans.emplace_back(tp[p]);     for (auto [x, y, z] : ans) {       std::cout << x + 1 <<     << y + 1 <<     << z + 1 <<   n ;     }   }   