#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > pnts;
int n;
set<pair<int, int> > S;
void Get(int l, int r) {
  if (l > r) return;
  int m = l + r >> 1;
  for (int i = l; i <= r; i++)
    S.insert(pair<int, int>(pnts[m].first, pnts[i].second));
  Get(l, m - 1);
  Get(m + 1, r);
}
int main() {
  scanf("%d", &n);
  while (n--) {
    int x, y;
    scanf("%d %d", &x, &y);
    pnts.push_back(pair<int, int>(x, y));
    S.insert(pair<int, int>(x, y));
  }
  sort(pnts.begin(), pnts.end());
  Get(0, pnts.size() - 1);
  printf("%d\n", S.size());
  for (set<pair<int, int> >::iterator it = S.begin(); it != S.end(); it++)
    printf("%d %d\n", it->first, it->second);
  return 0;
}
