Падающие карты
Поставить игральную карту на ребро — задача не из легких, но некоторому терпеливому человеку удалось установить N карт на столе так, что каждая стоит на своем коротком ребре. Вид сверху на этот стол с картами можно представить как набор отрезков с координатами (x_i, y_i) до (v_i, w_i). Эти отрезки не пересекаются.
Первая карта падает на бок, вызывая падение любой карты, с которой она соприкасается. Угол между вектором (x_1, y_1)–(v_1, w_1) и направлением падения первой карты составляет 90 градусов (измеряется против часовой стрелки). Если карта A касается карты B, направление падения B выбирается так, чтобы продолжение вектора направления не пересекало линию, содержащую отрезок A. Входные данные гарантируют отсутствие:
карты, падающей точно перпендикулярно другой, и
падающей карты, которая касается более чем одной из стоящих карт.
Ваша задача — определить, какие карты упадут, а какие останутся стоять.
Входные данные
Первая строка входного файла содержит числа N H (1 ≤ N ≤ 100, H > 0) — количество карт и высоту карты с плавающей точкой. Каждая из следующих N строк содержит четыре числа с плавающей точкой x_i y_i v_i w_i — координаты карт, разделенные пробелами.
Выходные данные
Выходной файл должен содержать список номеров упавших карт, отсортированных в порядке возрастания и разделенных пробелами.