Олимпиадный тренинг

Задача . F. Электрическая схема


Паша — начинающий техник, но уже поставил себе большую цель собрать собственный компьютер. Первая непростая задача — научиться собирать электрическую схему.

Схема, которую собрал Паша, состоит из несколько проводов. Каждый провод — это отрезок, который соединяет две точки на плоскости с целыми координатами, лежащими в диапазоне \([1, 10^9]\).

В схеме есть провода двух цветов:

  • красные провода: эти провода должны иметь вид горизонтального отрезка, то есть если провод соединяет две точки \((x_1, y_1)\) и \((x_2, y_2)\), то выполнено, что \(y_1 = y_2\);
  • синие провода: эти провода должны иметь вид вертикального отрезка, то есть если провод соединяет две точки \((x_1, y_1)\) и \((x_2, y_2)\), то выполнено, что \(x_1 = x_2\).

Обратите внимание, что если провод соединяет две одинаковые точки, то он может быть как красным, так и синим. Также в Пашиной схеме никакие два провода одного цвета не могут пересекаться, то есть любые два отрезка проводов одного цвета не могут содержать общих точек.

Недоработка Пашиной схемы состоит в том, что его провода не были изолированы, и поэтому в точках пересечения проводов разных цветов возникли искры, которые Паша увидел. Он записал все точки, в которых он увидел искру. У него получилось множество из \(n\) различных точек. После чего он разобрал схему и пошёл спать.

Утром, когда Паша увидел на листочке множество из \(n\) точек, в которых он увидел искру, ему стало интересно, сколько проводов он использовал, собрав эту схему. К сожалению, он ничего не запомнил, поэтому он решил узнать, какое минимальное количество проводов он мог использовать в своей схеме. Помогите ему узнать это число, а также расположить эти провода так, чтобы в получившейся схеме искры возникли в тех же самых точках.

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

В первой строке находится одно целое число \(n\) (\(1 \leq n \leq 1000\)) — количество точек, в которых Паша увидел искру.

В следующих \(n\) строках находится по два целых числа \(x\) и \(y\) (\(1 \leq x, y \leq 10^9\)) — координаты очередной точки. Гарантируется, что все точки различны.

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

Выведите описание электрической схемы в следующем формате:

Сначала выведите \(h\) — количество горизонтальных красных проводов (\(0 \leq h\)). В следующих \(h\) строках выведите по \(4\) целых числа \(x_1\), \(y_1\), \(x_2\), \(y_2\) — координаты двух точек \((x_1, y_1)\) и \((x_2, y_2)\), которые соединяет очередной красный провод. Поскольку отрезки горизонтальные, должно быть выполнено \(y_1 = y_2\). Также должно быть выполнено \(1 \leq x_1, y_1, x_2, y_2 \leq 10^9\).

Потом выведите \(v\) — количество вертикальных синих проводов (\(0 \leq v\)). В следующих \(v\) строках выведите по \(4\) целых числа \(x_1\), \(y_1\), \(x_2\), \(y_2\) — координаты двух точек \((x_1, y_1)\) и \((x_2, y_2)\), которые соединяет синий очередной провод. Поскольку отрезки вертикальные, должно быть выполнено \(x_1 = x_2\). Также должно быть выполнено \(1 \leq x_1, y_1, x_2, y_2 \leq 10^9\).

Никакие два отрезка одного цвета не должны иметь общих точек. Множество точек, в которых Паша мог увидеть искру, если бы он построил такую схему, должно совпадать с данным во входных данных множеством точек.

Количество отрезков \((h + v)\) должно быть минимально возможным. Можно легко показать, что ответ всегда существует. Если существует несколько возможных ответов, выведите любой.

Примечание

В первом примере Паша мог собрать такую схему:

В этой схеме по \(2\) провода каждого цвета: красные из \((5, 2)\) в \((1, 2)\) и из \((1, 4)\) в \((5, 4)\), синие из \((2, 1)\) в \((2, 5)\) и из \((4, 5)\) в \((4, 1)\). Заметим, что он увидит искры ровно в тех точках, которые он записал (обозначены желтым цветом на картинке). Например, искру в точке \((2, 4)\) он увидит, так как в этой точке пересекаются второй красный провод и первый синий. Можно доказать, что нужно не меньше \(4\)-х проводов, чтобы получить схему, нужную Паше.


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

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя