eolymp
bolt
Try our new interface for solving problems
Problems

Страусиные страсти

Страусиные страсти

Как вы помните, у Джонни приключился досадный инцидент со страусом Чаком. Поймав всех разбежавшихся страусов, фермер задумался о том, как бы не повторить подобного беспорядка в будущем. Джонни принял решение построить новое жильё для птиц. Он поставил \textbf{N} наблюдательных вышек с часовыми и прожекторами и соединил их заборами с колючей проволокой под напряжением, огородив тем самым дворик в форме многоугольника из N вершин, на котором будут жить страусы. Для простоты наблюдения он хочет соединить некоторые пары не соседних вышек стенами с пулемётчиками, разбив тем самым двор на \textbf{N-2} треугольных части, образующих загоны для страусов. Естественно, стены должны лежать целиком внутри многоугольника, и каждый загон должен представлять собой невырожденный треугольник, т. е. его площадь должна быть ненулевой. Сейчас фермеру предстоит выбрать, как именно он будет разбивать двор. Помогите ему проанализировать все возможные варианты проведения стен. Джонни интересуют два вопроса --- как водится, попроще и посложнее. Во-первых, он хочет знать, для каких пар вышек существует план разбиения, включающий стену между ними. Во-вторых, его интересует, сколько вообще существует планов разбиения двора. \InputFile В первой строке входного файла идёт число \textbf{N} (\textbf{3} ≤ \textbf{N} ≤ \textbf{300}) --- количество вышек. В последующих \textbf{N} строках даны описания вышек по порядку их обхода. \textbf{i}-я строка содержит два целых числа \textbf{x_i}, \textbf{y_i}, по модулю не превосходящих \textbf{10^4} --- координаты \textbf{i}-ой вышки. Гарантируется, что двор представляет собой многоугольник ненулевой площади без самокасаний и самопересечений. \OutputFile В первой строке выведите \textbf{K} --- количество пар вышек, между которым потенциально может быть проведена стена. Далее выведите \textbf{K} пар номеров вышек по одному в каждой строке. Числа в каждой паре должны быть упорядочены по возрастанию, пары должны идти сначала по возрастанию первых чисел, потом по возрастанию вторых чисел. Последняя строка должна содержать единственное число --- количество способов поделить двор на загоны. Так как оно может быть достаточно большим, выведите остаток от его деления на \textbf{2^30 = 1073741824}.
Time limit 1 second
Memory limit 256 MiB
Input example #1
5
1 1
3 3
4 0
2 -2
1 0
Output example #1
5
1 3
1 4
2 4
2 5
3 5
5