func_code_string: #include <bits/stdc++.h>   const int MAXN = 1000 + 10;   int n;   std::set<int> g[MAXN];   std::vector<std::pair<int, int> > process(bool ty) {     std::vector<std::pair<int, int> > ans;     for (int i = 2; i < n; i++) {       while (!g[1].count(i + 1)) {         int k = *std::next(g[1].find(i));         assert(g[i].count(k));         g[i].erase(k);         g[k].erase(i);         for (auto v : g[i]) {           if (v != 1 && g[k].count(v)) {             assert(i < v && v < k);             g[1].insert(v);             g[v].insert(1);             if (ty) {               ans.emplace_back(v, 1);             } else {               ans.emplace_back(i, k);             }             break;           }         }       }     }     return ans;   }   void read() {     for (int i = 1; i <= n; i++) g[i].clear();     for (int i = 1; i <= n - 3; i++) {       int a, b;       scanf( %d%d , &a, &b);       g[a].insert(b);       g[b].insert(a);     }     for (int i = 1; i < n; i++) {       g[i].insert(i + 1);       g[i + 1].insert(i);     }     g[1].insert(n);     g[n].insert(1);   }   int main() {     scanf( %d , &n);     read();     auto ans1 = process(0);     read();     auto ans2 = process(1);     std::reverse(ans2.begin(), ans2.end());     ans1.insert(ans1.end(), ans2.begin(), ans2.end());     printf( %lu n , ans1.size());     for (auto i : ans1) {       printf( %d %d n , i.first, i.second);     }   }   