B. Надмножество
ограничение по времени на тест
2 seconds
ограничение по памяти на тест
256 megabytes
ввод
стандартный ввод
вывод
стандартный вывод

Множество точек на плоскости называется хорошим, если для любых двух точек выполняется хотя бы одно из трех условий:

  • эти две точки лежат на одной горизонтали;
  • эти две точки лежат на одной вертикали;
  • внутри или на границе прямоугольника с углами в этих двух точках есть другие точки множества, помимо этих двух. Здесь имеется в виду прямоугольник со сторонами, параллельными осям координат, так называемый bounding box двух точек.

На плоскости задано множество из n точек. Найдите любое хорошее надмножество этого множества размером не более 2·105 точек.

Входные данные

В первой строке записано целое число n (1 ≤ n ≤ 104) — количество точек в исходном множестве. Следующие n строк описывают точки множества. Каждая строка содержит два целых числа xi и yi ( - 109 ≤ xi, yi ≤ 109) — координаты очередной точки. Гарантируется, что все точки различны.

Выходные данные

В первой строке выведите количество точек m (n ≤ m ≤ 2·105) в хорошем надмножестве, в следующих m строках выведите сами точки. Координаты точек не должны превосходить 109 по абсолютной величине. Обратите внимание, что минимизировать m не требуется, достаточно найти любое хорошее надмножество заданного множества, размер которого не превосходит 2·105.

Все точки в надмножестве должны иметь целые координаты.

Примеры
Входные данные
2
1 1
2 2
Выходные данные
3
1 1
2 2
1 2