Три друга любят играть в следующую игру. Первый друг выбирает строку \(S\). Затем второй друг создает новую строку \(T\), который состоит из двух копий строки \(S\). Наконец, третий друг вставляет одну букву в начале, в конце или где-то внутри строки \(T\), тем самым создавая новую строку \(U\).
Дана строка \(U\), ваша задача – восстановить исходную строку \(S\).
Первая строка ввода содержит \(N\) (\(2 \leq N \leq 2\,000\,001\)) – длину итоговой строки \(U\). Сама строка \(U\) задается на второй строке. Она состоит из \(N\) заглавных английских букв.
Ваша программа должна напечатать исходную строку \(S\). Однако есть два исключения:
Решения, правильно работающие на тестах, в которых \(2 \leq N \leq 2001\) будут оцениваться в \(35\) баллов.
7 ABXCABC
ABC
9 ABABABABA
NOT UNIQUE
6 ABCDEF
NOT POSSIBLE
Долгое время на острове Байтопия правил справедливый король Байтазар. Но после внезапной смерти царя двое его сыновей-близнецов Битеон и Байтеон не смогли прийти к соглашению, кто из них должен взойти на трон. Поэтому они решили разделить остров на две провинции, чтобы управлять ими самостоятельно. На прямоугольной карте Байтопия имеет форму многоугольника из N вершин.
Каждая сторона многоугольника параллельна одной из сторон карты, а любые две соседние стороны перпендикулярны друг другу. Ни одна из сторон многоугольника не пересекает и не касается любой другой стороны, за исключением общей вершины двух последовательных сторон.
Битеон и Байтеон хотят разделить многоугольник на два конгруэнтных многоугольника, используя один отрезок, содержащийся в полигоне и параллельный одной из сторон карты. (Два многоугольника называются конгруэнтными, если один может быть совмещён с другим с помощью комбинации отражений, поворотов и параллельных переносов). Координаты вершин многоугольника и точки разделяющего отрезка – целые числа.
Сыновья короля просили Вас проверить, возможно ли провести такое разделение.
По данной форме острова, определите, может ли он быть разделен горизонтальным или вертикальным отрезком на две конгруэнтные части. Если это возможно, найдите любой такой отрезок.
Первая строка входных данных содержит одно целое число \(N\) (\(4 \leq N \leq 100\,000\)) – количество вершин. Следующие N\( \)строк содержат по паре целых чисел \(X_i\) и \(Y_i\) (\(0 \leq X_i, Y_i \leq 10^9\)) – координаты \(i\)-й вершины.
Вершины задаются в порядке обхода многоугольника, т. е. отрезки \((X_1, Y_1) - (X_2, Y_2)\), \((X_2, Y_2) - (X_3, Y_3)\), \(\dots\), \((X_{N-1} , Y_{N-1}) - (X_N , Y_N)\) и \((X_N, Y_N) - (X_1, Y_1)\) – все стороны многоугольника. Кроме того, любые два последовательных отрезка перпендикулярны друг другу.
Ваша программа должна вывести одну строку. Если можно разделить остров на две конгруэнтные части горизонтальным или вертикальным отрезком с конечными точками \((x_1, y_1)\) и \((x_2, y_2)\), выведите \(4\) целых числа \(x_1\), \(y_1\), \(x_2\) и \(y_2\), разделенные пробелами. При этом должно выполняться либо \(x_1 = x_2\), либо \(y_1 = y_2\). Отрезок должен лежать внутри многоугольника и только его конечные точки должны лежать на границе.
Если существует вертикальный разрез – выведите его, иначе выведите горизонтальный. Выводить необходимо отрезок слева направо, либо снизу вверх. Если не удается найти подходящее деление, выведите одно слово NO.
Подзадача 5 (12 баллов). Площадь многоугольника не превосходит 1000.
Подзадача 2 (9 баллов). \(4 \leq N \leq 10 000\). Любая горизонтальная или вертикальная линия, разделяющая многоугольник, делит его ровно на две части.
Подзадача 3 (12 баллов). \(4 \leq N \leq 200\).
Подзадача 4 (20 балла). \(4 \leq N \leq 2 000\).
Подзадача 5 (47 баллов). \(4 \leq N \leq 100 000\).
10 0 0 1 0 1 1 3 1 3 5 2 5 2 3 1 3 1 2 0 2
1 2 3 2
6 0 0 1 0 1 1 2 1 2 2 0 2
NO