Батут

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

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

Для конференции Вадим хочет подготовить ряд развлечений. Одно и них - батут. Он с командой уже построили n опор для батута, и теперь хотят его натянуть. При взгляде сверху, каждая опора является точкой на плоскости. Батут будет являться простым многоугольником с вершинами в этих точках. Простой многоугольник это многоугольник, граница которого не имеет самопересечений и самокасаний. Ребята хотят, чтобы батут имел наибольшую возможную площадь. И при этом, они хотят использовать каждую опору. Помогите им выбрать порядок, в котором опоры должны встречаться на границе батута, чтобы он представлял из себя простой многоугольник и имел наибольшую возможную площадь.

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

В первой строке дано одно целое число n - количество опор для батута (3 ≤ n ≤ 9). В следующих n строках даны по два целых числа xi и yi - координаты i-й опоры (−108 ≤ xi,yi ≤ 108). Гарантируется, что никакие две точки не совпадают.

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

Если невозможно построить простой многоугольник, вершинами которого будут являться данные точки, в единственной строке выведите No. Иначе, в первой строке выведите Yes, а в следующей строке выведите перестановку чисел от 1 до n - порядок, в котором опоры должны идти по границе батута.

Пример

input output
5
0 0
2 2
-2 -2
2 -2
-2 2
Yes
1 2 4 3 5

Примечание

Войдите, что бы отправлять решения