#include <bits/stdc++.h>
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using namespace std;
const int N = 10002;
int n;
pair<int, int> a[N];
vector<pair<int, int> > res;
void solve(int l, int r) {
  if (l >= r) return;
  int m = (l + r) >> 1, mid = a[m].first;
  int R = l - 1, L = r + 1;
  while (R < r && a[R + 1].first < mid) R++;
  while (L > l && a[L - 1].first > mid) L--;
  for (int i = (l); i <= (r); ++i)
    if (a[i].first != mid) res.emplace_back(mid, a[i].second);
  solve(l, R);
  solve(L, r);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  for (int i = (1); i <= (n); ++i)
    cin >> a[i].first >> a[i].second, res.emplace_back(a[i].first, a[i].second);
  sort(a + 1, a + 1 + n);
  solve(1, n);
  sort((res).begin(), (res).end());
  res.erase(unique((res).begin(), (res).end()), res.end());
  cout << ((int)(res).size()) << '\n';
  for (pair<int, int> v : res) cout << v.first << ' ' << v.second << '\n';
  return 0;
}
