%
% Летние всероссийские школьные учебно-тренировочные сборы по информатике
% воскресенье, 30 июня 2015 года
%
% Условие: Андрей Станкевич
% Тесты: Михаил Тихомиров
% Решения: Сергей Копелиович
% Идея: Михаил Тихомиров
%

\gdef\thisproblemauthor{Михаил Тихомиров}
\gdef\thisproblemdeveloper{Михаил Тихомиров}
\begin{problem}{Коровы}
{}{}
%{\textsl{стандартный ввод}}{\textsl{стандартный вывод}}
{2 секунды}{512 мебибайт}{}

Фермер Паша расставил $n$ своих коров на плоскости,
$i$-я корова расположена в точке с координатами $(x_i, y_i)$.
Никакая корова не расположена в начале координат.

Теперь фермер Паша хочет надеть на каждую из своих коров ошейник одного из трёх
разных цветов: красного, синего и зелёного. При этом для каждого
цвета ошейника должна найтись корова, на которую надет ошейник такого цвета.

После этого каждая корова либо радуется, либо расстраивается.
Коровы, на которых надет ошейник 
цвета $C$, радуются, если найдутся три такие коровы с ошейником
цвета $C$, что треугольник с вершинами в этих коровах содержит начало
координат.

Фермер Паша считает способ надеть ошейники на коров \emph{удачным}, если 
все коровы радуются. Теперь он хочет посчитать, сколько существует
различных удачных способов надеть ошейники на коров, и просит
вывести ответ по модулю $10^9 + 7$.

Гарантируется, что никакие две коровы не находятся в одной точке, никакая корова не 
расположена в начале координат, никакие три коровы не лежат на одной прямой, и никакие две 
коровы не лежат на одной прямой, проходящей через начало координат.

\InputFile

Первая строка ввода содержит одно целое число $n$ "--- количество коров. 
Каждая из следующих $n$ строк содержит два целых числа "--- 
координаты коров. Координаты коров не превосходят по модулю $10^6$.

\OutputFile

Выведите количество удачных способов надеть ошейники на коров по модулю $10^9 + 7$.

\Example

\begin{example}
\exmp{%
9
3 -1
2 2
1 0
1 -2
0 1
-1 3
-1 -2
-2 2
-2 -1
}{%
72
}%
\end{example}

\Scoring

Баллы за каждую группу начисляются только при прохождении всех тестов группы.

\vspace*{0.5em}
\hspace*{-0.5em}\begin{tabular}{ll}
  {\bf Подзадача 1 (20 баллов):} & $1 \le n \le 10$. \\ % O(3^n n^c)
  {\bf Подзадача 2 (10 баллов):} & $1 \le n \le 20$. \\ % O(2^n n^c)
  {\bf Подзадача 3 (10 баллов):} & $1 \le n \le 30$. \\ % экспонента с отсечениями?
  {\bf Подзадача 4 (20 баллов):} & $1 \le n \le 40$. \\ % O(n^?)
  {\bf Подзадача 5 (10 баллов):} & $1 \le n \le 100$. \\ % O(n^4)
  {\bf Подзадача 6 (20 баллов):} & $1 \le n \le 300$. \\ % O(n^3)
  {\bf Подзадача 7 (10 баллов):} & $1 \le n \le 2000$. \\ % O(n^2)
\end{tabular}

\end{problem}
