#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int n;
int m;
pair<int, int> v[300000];
int go(int l, int r) {
  if (l + 1 >= r) return 0;
  int s = l + (r - l) / 2;
  int x = v[s].first;
  int nl = l, nr = r;
  while (nl < r && v[nl].first < x) nl++;
  while (nr > l && v[nr - 1].first > x) nr--;
  go(l, nl);
  go(nr, r);
  set<int> all;
  for (int i = l; i < nl; i++) all.insert(v[i].second);
  for (int i = nr; i < r; i++) all.insert(v[i].second);
  for (int i = nl; i < nr; i++) all.erase(v[i].second);
  set<int>::iterator it;
  for (it = all.begin(); it != all.end(); it++) v[n++] = make_pair(x, *it);
  return 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &v[i].first, &v[i].second);
  sort(v, v + n);
  go(0, n);
  printf("%d\n", n);
  for (int i = 0; i < n; i++) printf("%d %d\n", v[i].first, v[i].second);
  return 0;
}
