Problem description


Wielokąty wypukłe
(wielokaty-wypukle)
Limit pamięci: 128 MB
Limit czasu: 7.00 s

Danych jest N punktów na płaszczyźnie.

Napisz program, który: wczyta pozycje punktów, wyznaczy liczbę podzbiorów punktów, które tworzą wielokąt wypukły (wszystkie kąty mniejsze niż 180 i wszystkie punkty ze zbioru na brzegu wielokąta) i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, określająca liczbę punktów. W kolejnych N wierszach znajduje się opis kolejnych punktów, po jednym w wierszu. Opis każdego punktu składa się z dwóch liczb całkowitych xi oraz yi, oddzielonych pojedynczym odstępem. Są to współrzędne i-tego punktu.

Wyjście

W pierwszym (jedynym) wierszu wyjścia powinna się znaleźć jedna nieujemna liczba całkowita – reszta z dzielenia przez 109 + 7 liczby podzbiorów punktów, które tworzą wielokąt wypukły.

Uwaga

W tym zadaniu przyjmujemy, że wielokąt musi mieć co najmniej trzy boki.

Ograniczenia

1 ≤ N ≤ 200,  − 109 ≤ xi, yi ≤ 109.

Przykład

Wejście Wyjście Wyjaśnienie
5
0 0
2 0
1 1
2 2
0 2
9

Jest 9 wielokątów wypukłych: wszystkie trójkąty (jest ich 8) oraz kwadrat (bez punktu środkowego).

test test