#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > p, pt;
int n, m;
void getanswer(int l, int r) {
  if (l >= r) return;
  getanswer(l, (l + r) / 2);
  getanswer(1 + ((l + r) / 2), r);
  for (int i = int(l); i <= int(r); ++i) {
    m++;
    pt.push_back(make_pair(p[(l + r) / 2].first, p[i].second));
  }
}
int main() {
  scanf("%I32d", &n);
  p.resize(n);
  pt.resize(n);
  for (int i = 0; i < int(n); i++)
    scanf("%I32d%I32d", &p[i].first, &p[i].second);
  stable_sort(p.begin(), p.end());
  for (int i = 0; i < int(n); i++) pt[i] = p[i];
  m = n;
  getanswer(0, n - 1);
  stable_sort(pt.begin(), pt.end());
  p.clear();
  for (int i = 0; i < int(m); i++)
    if ((i == 0) || (pt[i] != pt[i - 1])) p.push_back(pt[i]);
  printf("%I32d\n", (int)p.size());
  for (int i = 0; i < int(p.size()); i++)
    printf("%I32d %I32d\n", p[i].first, p[i].second);
  return 0;
}
