Место преступления

Ограничение по времени: 3.000 секунд

Ограничение по памяти: 100.000 мегабайт

Члены экипажа обнаружили место преступления предателя. Теперь команда корабля хочет оградить это место преступления.

Место преступления выглядит как выпуклый многоугольник A. Команда корабля хочет оградить его другим выпуклым многоугольником B. Причем, у B должно быть минимальное возможное число вершин. И все вершины многоугольника A должны лежать на границе многоугольника B.

Помогите команде выбрать такой многоугольник B.

Формат входных данных

В первой строке дано одно целое число t - количество тестовых наборов (1 ≤ t ≤ 1000). Далее дано описание t тестовых наборов.

В первой строке тестового набора дано одно целое число n - количество вершин в многоугольнике A (3 ≤ n ≤ 100).

В следующих n строках даны по два целых числа xi и yi - координаты i-й вершины многоугольника (|xi|,|yi| ≤ 1000). Вершины многоугольника даны в порядке обхода против часовой стрелки. Гарантируется, что многоугольник является строго выпуклым. То есть, в том числе, никакие три его последовательные вершины не лежат на одной прямой.

Формат выходных данных

Для каждого тестового набора сначала выведите одно целое число m - количество вершин в найденном многоугольнике B.

В следующих m строках выведите по два вещественных числа xi и yi - координаты i-й вершины многоугольника. Выводите вершины многоугольника в порядке обхода против часовой стрелки. Выведенный многоугольник должен быть строго выпуклым. А также, все вершины исходного многоугольника должны находиться на расстоянии не более 10−6 от границы выведенного многоугольника.

Пример

input output
3
3
1 0
1 1
0 1
4
0 0
1 0
1 1
0 1
5
1 0
3 0
3 2
1 2
0 1
3
0.0 0.0
2.0 0.0
0.0 2.0
3
0.0 0.0
2.0 0.0
0.0 2.0
3
3.0 0.0
3.0 4.0
-1.0 0.0
Войдите, что бы отправлять решения