E. Бинарное дерево на плоскости
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Корневое дерево — это ориентированный ациклический граф, в котором есть одна вершина (корень), из которой существует ровно один путь до любой другой вершины.

Корневое дерево называется бинарным, если каждая вершина имеет не более двух исходящих дуг.

Когда бинарное дерево рисуют на плоскости, все дуги должны быть направлены сверху вниз. То есть для каждой дуги из u в v должно выполняться: yu > yv.

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

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

В первой строке записано одно целое число n (2 ≤ n ≤ 400) — количество вершин в дереве. Далее следует n строк по два целых числа в каждой: xi, yi (|xi|, |yi| ≤ 103) — координаты вершин дерева. Гарантируется, что все точки различны.

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

Если невозможно построить бинарное дерево на данных точках, выведите «-1». Иначе выведите одно вещественное число — суммарную длину дуг в минимальном бинарном дереве. Ответ будет засчитан, если абсолютная или относительная погрешность не превосходит 10 - 6.

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