func_code_string: #include <bits/stdc++.h>   using namespace std;   ;   const double eps = 1e-8;   const int mod = 1e9 + 7;   const int maxn = 3e5 + 5;   const int INF = 0x3f3f3f3f;   const long long INFLL = 0x3f3f3f3f3f3f3f3f;   struct EDGE {     int v, nxt;   } edge[maxn << 1];   int head[maxn], tot;   void add_edge(int u, int v) {     edge[tot].v = v, edge[tot].nxt = head[u], head[u] = tot++;   }   long long bit[maxn];   int lowbit(int x) { return x & (-x); }   void add(int pos, int val) {     while (pos < maxn) {       bit[pos] += val, pos += lowbit(pos);     }   }   long long sum(int pos) {     long long ans = 0;     while (pos) {       ans += bit[pos], pos -= lowbit(pos);     }     return ans;   }   pair<int, int> p[maxn];   set<pair<int, int> > s;   void dfs(int l, int r) {     int mid = (l + r) >> 1;     for (int i = l; i <= r; i++) {       s.insert(make_pair(p[mid].first, p[i].second));     }     if (l < mid) dfs(l, mid - 1);     if (r > mid) dfs(mid + 1, r);   }   int main() {     int n;     scanf( %d , &n);     for (int i = 0; i < n; i++) {       cin >> p[i].first >> p[i].second;     }     sort(p, p + n);     dfs(0, n - 1);     cout << s.size() << endl;     set<pair<int, int> >::iterator it;     for (it = s.begin(); it != s.end(); it++)       cout << it->first <<     << it->second << endl;     return 0;   }   