Affine Mess
Тесс Л. Атион столкнулась с небольшой проблемой на прошлой неделе, когда демонстрировала бета-версию своего нового программного обеспечения для рисования. На экране у нее был элегантный демонстрационный дизайн, который иллюстрировал каждую функцию ее программы; на его создание у нее ушли часы. Она как раз наносила последние штрихи, когда в комнату вошла группа потенциальных инвесторов, чтобы увидеть демонстрацию.
Презентация прошла хорошо. Ближе к концу Тесс нажала кнопку на панели управления и сказала своей аудитории: "Это управление 'привязкой к сетке'. Оно заставляет контрольные точки, такие как вершины, перемещаться к ближайшей точке сетки. Позвольте мне показать вам," и она разместила три ярко-красные точки на экране. Каждая из них появилась в точке сетки, ближайшей к месту, где она кликнула. ("К счастью, все контрольные точки в моем демонстрационном дизайне уже были в целочисленных координатах. Но я должна помнить, чтобы удалить эти три красные точки, прежде чем сохранить свой диаграмму," подумала она про себя.) "Теперь я выйду в соседнюю комнату и не буду вам мешать, чтобы вы могли обсудить систему между собой и поближе взглянуть на экран, но, пожалуйста, ничего не трогайте, так как я еще не сохранила этот файл."
Через несколько минут группа присоединилась к Тесс. Один из посетителей подошел к Тесс и сказал: "Надеюсь, вы не против, но я хотел попробовать сам. Не волнуйтесь, я просто немного поиграл с контролями масштаба по x и y." Следующий человек сказал: "Извините, если это проблема, но я действительно хотел почувствовать скорость отображения, поэтому я просто поиграл с инструментом трансляции." И третий человек сказал: "Я не смог устоять перед одним маленьким тестом: я повернул изображение, чтобы увидеть, как все вершины привязываются к ближайшим точкам сетки после поворота."
Человек, который играл с инструментом поворота, помнил, что был первым, но двое других не могли вспомнить свой порядок. Все трое помнили лишь несколько деталей изменений. Факторы масштабирования по x и y были (возможно, отрицательными) ненулевыми целыми числами; центр масштабирования был в начале координат (0, 0). Величины трансляции по x и y были целыми числами. Поворот был задан точкой с целочисленными координатами (x, y) на периметре квадрата шириной 20, центрированного в начале координат (следовательно, -10 ≤ x, y ≤ 10 и абсолютное значение x или y или обоих было 10). Инструмент поворачивал рисунок вокруг начала координат так, чтобы положительная ось x проходила через (x, y) после этого. Привязка происходила после этого поворота (координаты с дробной частью 0.5 округлялись в сторону от нуля).
После их ухода Тесс посмотрела на свой дизайн – он был полностью изменен! Она еще не реализовала функцию "отмены", и она не сохранила диаграмму перед демонстрацией. Однако три идентичные красные точки все еще были там (преобразованные в другие целочисленные положения на сетке, конечно), и Тесс могла вспомнить целочисленные координаты, где она изначально их разместила. Очевидно, кто-то еще мог изменить рисунок, не сказав ей об этом, но она могла написать программу, чтобы проверить, возможно ли было восстановить последовательность изменений. Можете ли вы тоже?
Входные данные
Вход содержит несколько тестов. Каждый тест состоит из шести пар целых чисел x_i и y_i (-500 ≤ x_i, y_i ≤ 500 для 1 ≤ i ≤ 6), по три пары на строку. Первые три пары представляют собой различные начальные положения трех красных точек. Последние три пары представляют собой различные конечные положения трех точек. Индексация пар в каждой группе из трех не имеет значения: например, (x_1, y_1) могло быть отображено в любую из (x_4, y_4), (x_5, y_5) или (x_6, y_6).
Последний тест заканчивается строкой из шести нулей.
Выходные данные
Для каждого теста выведите его номер, за которым следует одно из следующих трех сообщений:
"equivalent solutions" чтобы указать, что существует одно или несколько допустимых преобразований, и все они оказывают одинаковое влияние на весь рисунок (независимо от того, как выглядит весь рисунок).
"inconsistent solutions" чтобы указать, что существует несколько допустимых преобразований, но в общем случае не все из них отображают весь рисунок одинаково (некоторые рисунки отображаются по-разному двумя допустимыми преобразованиями).
"no solution" чтобы указать, что ни один из первых двух случаев не происходит.
Допустимое преобразование - это комбинация поворота, трансляции и масштабирования (или поворота, масштабирования и трансляции), которая удовлетворяет описанным выше ограничениям и отображает начальный набор красных точек в конечный набор (занимая все три конечных положения).
Следуйте формату примера вывода.