#include <bits/stdc++.h>
using namespace std;
int n;
pair<int, int> p[100001];
set<pair<int, int> > ans;
set<pair<int, int> >::iterator it;
void w(int f, int l) {
  if (f >= l) return;
  int m = (f + l) / 2;
  for (int i = f; i <= l; i++)
    if (i != m) ans.insert(make_pair(p[m].first, p[i].second));
  w(f, m - 1);
  w(m + 1, l);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    scanf("%d%d", &p[i].first, &p[i].second), ans.insert(p[i]);
  sort(p, p + n);
  w(0, n - 1);
  printf("%d\n", ans.size());
  for (it = ans.begin(); it != ans.end(); it++)
    printf("%d %d\n", it->first, it->second);
  return 0;
}
