\begin{problem}{Выпуклая оболочка}{hull.in}{hull.out}{2 секунды}{256 мегабайт}

Дано $N$ точек на плоскости.

Нужно построить их выпуклую оболочку.

Гарантируется, что выпуклая оболочка не вырождена.

\InputFile

В первой строке число $N$ ($3 \le N \le 10^5$).
Следующие $N$ строк содержат пары целых чисел $x$ и $y$ ($-10^9 \le x, y \le 10^9$) --- точки.

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

\OutputFile

В первой строке выведите $N$ --- число вершин выпуклой оболочки.
Следующие $N$ строк должны содержать координаты вершин в порядке обхода.
Никакие три подряд идущие точки не должны лежать на одной прямой.

\Example

\begin{example}
\exmp{
5
0 0
2 0
0 2
1 1
2 2
}{
4
0 0
2 0
2 2
0 2
}%
\end{example}

\end{problem}
