#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000 + 10;
pair<int, int> p[maxn];
vector<pair<int, int> > res;
int n;
void work(int l, int r) {
  if (l > r) return;
  if (p[l].first == p[r].first) return;
  int c = 0;
  for (int i = l, j; i <= r; i = j) {
    for (j = i; j <= r && p[i].first == p[j].first; j++)
      ;
    if ((c + j - i) * 2 >= r - l + 1) {
      for (int k = l; k <= r; k++)
        res.push_back(make_pair(p[i].first, p[k].second));
      work(l, i - 1);
      work(j, r);
      return;
    }
    c += j - i;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &p[i].first, &p[i].second);
  for (int i = 0; i < n; i++) res.push_back(p[i]);
  sort(p, p + n);
  work(0, n - 1);
  sort(res.begin(), res.end());
  res.erase(unique(res.begin(), res.end()), res.end());
  printf("%d\n", res.size());
  for (int i = 0; i < res.size(); i++)
    printf("%d %d\n", res[i].first, res[i].second);
}
