Уральские контесты часто содержат очень много геометрии. Многие участники сборов высказывают своё недовольство такой несбалансированностью по темам. Несмотря на это, мы решили не нарушать традицию и снова дать несбалансированный по темам контест. Итак, начнём.
Рассмотрим итеративный процесс для множества точек на плоскости. Каждая итерация состоит из трёх этапов:
- Провести через каждую пару различных точек прямую.
- Найти точки пересечения всех пар различных непараллельных прямых.
- Объединить исходное множество точек и множество точек пересечения и перейти к пункту 1.
Таким образом, после выполнения одной итерации размер множества точек либо остаётся таким же, либо увеличивается.
Пусть мы имеем некоторое множество точек. Будем повторять итерации, пока оно увеличивается.
Сколько точек будет в множестве после окончания процесса?
Исходные данные
В первой строке входа располагается целое число n (1 ≤ n ≤ 100000).
Далее на вход подаются n различных точек, каждая в отдельной строке. Каждая точка задаётся парой целочисленных координат. Координаты не превосходят 108 по модулю.
Результат
Если процесс бесконечен, следует выдать «oo» (две маленькие латинские буквы «o»), в противном случае — количество точек на плоскости после окончания процесса.
Пример
исходные данные | результат |
---|
4
0 0
0 1
1 0
1 1
| 5
|
Автор задачи: Михаил Рубинчик
Источник задачи: Ural FU Dandelion contest. Petrozavodsk training camp. Summer 2014