#include <bits/stdc++.h>
using namespace std;
set<pair<int, int> > ans;
vector<pair<int, int> > p;
void solve(int i, int j) {
  if (j < i) return;
  if (i == j) {
    ans.insert(p[i]);
    return;
  }
  int m = (i + j) / 2;
  int x = p[m].first;
  for (int k = i; k <= j; k++) ans.insert(pair<int, int>(x, p[k].second));
  solve(i, m - 1);
  solve(m + 1, j);
}
int main() {
  int n;
  cin >> n;
  int a, b;
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &a, &b);
    p.push_back(pair<int, int>(a, b));
  }
  sort(p.begin(), p.end());
  solve(0, p.size() - 1);
  cout << ans.size() << endl;
  for (set<pair<int, int> >::iterator it = ans.begin(); it != ans.end(); it++)
    printf("%d %d\n", (*it).first, (*it).second);
  return 0;
}
