#include <bits/stdc++.h>
using namespace std;
int N;
vector<pair<int, int> > P, SS;
void f(int s, int e) {
  if (s == e) {
    SS.push_back(P[s]);
    return;
  }
  int m = (s + e) / 2;
  f(s, m);
  f(m + 1, e);
  for (int i = s; i <= e; i++) {
    SS.push_back(pair<int, int>(P[m].first, P[i].second));
  }
}
bool comp(pair<int, int> a, pair<int, int> b) { return a.second < b.second; }
int main() {
  scanf("%d", &N);
  P.resize(N);
  for (int i = 0; i < N; i++) {
    scanf("%d %d", &P[i].first, &P[i].second);
  }
  sort(P.begin(), P.end());
  f(0, N - 1);
  sort(SS.begin(), SS.end());
  SS.resize(unique(SS.begin(), SS.end()) - SS.begin());
  printf("%d\n", SS.size());
  for (int i = 0; i < SS.size(); i++) {
    printf("%d %d\n", SS[i].first, SS[i].second);
  }
}
