Задачі
Перетворення суфиксів
Перетворення суфиксів
Задано текст \textbf{s\[1..n\]} довжини \textbf{n}. Створимо суфіксний масив, взявши усі його суфікси
\textbf{s\[1..n\], s\[2..n\], ..., s\[n..n\]}
і відсортувавши їх лексикографічно. Отримаємо відсортований список суфіксів:
\textbf{s\[p(1)..n\], s\[p(2)..n\], ..., s\[p(n)..n\]}
та назвемо послідовність \textbf{p(1)}, \textbf{p(2)}, ..., \textbf{p(n)} суфіксним масивом \textbf{s\[1..n\]}. Наприклад, якщо \textbf{s = abbaabab}, то відсортований список суфіксів маєт вигляд:
\textbf{aabab, ab, abab, abbaabab, b, baabab, bab, bbaabab}
і суфіксний масив виглядатиме так: \textbf{4}, \textbf{7}, \textbf{5}, \textbf{1}, \textbf{8}, \textbf{3}, \textbf{6}, \textbf{2}.
Виявляється, побудувати такий масив можна за лінійний час. Ваша задача буде повністю протилежною: за заданими \textbf{p(1)}, \textbf{p(2)}, \textbf{p(3)}, ..., \textbf{p(n)} слід перовірити, чи існує хоча б один текст з прописних букв англійського алфавіту, для якого задана послідовність буде суфіксним масивом. Якщо відповідь позитивна, то вивести довільний такий текст. Інакше вивести \textbf{-1}.
\InputFile
Вхідні дані містять декілька описів суфіксних масивів. Перший рядок містить кількість тестів \textbf{t} (\textbf{t} ≤ \textbf{100}). Кожен опис починається з рядка, який містить довжину текста та масиву \textbf{n} (\textbf{1} ≤ \textbf{n} ≤ \textbf{500000}). Наступний рядок містить цілі числа \textbf{p(1)}, \textbf{p(2)}, ..., \textbf{p(n)}. Вважайте, що \textbf{1} ≤ \textbf{p(i)} ≤ \textbf{n} і щодне зі значень \textbf{p(i)} не зустрічається двічі. Розмір вхідних даних не перевищує \textbf{50} MB.
\OutputFile
Для кожного тесту вивести довільний текст, який задовольняє заданому суфіксному масиву. Якщо потріного тексту з прописних букв англійського алфавіту не існує, то вивести \textbf{-1}.
Вхідні дані #1
6 2 1 2 2 2 1 3 2 3 1 6 3 4 5 1 2 6 14 3 10 2 12 14 5 13 4 1 8 6 11 7 9 7 5 1 7 4 3 2 6
Вихідні дані #1
ab aa bab suffix reconstruction issofun