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