Задача C. Восстановление строки
Ограничение по времени | Ограничение по памяти |
---|---|
3 секунды | 256 мегабайт |
Вам дана строка длины , состоящая из строчных латинских букв и символов '?'. Также, вам даны условий. Каждое условие описывается тремя целыми числами , и , которые означают что подстрока ($s_{l_1}$ $\ldots$ $s_{l_1+x-1}$) должна быть равна подстроке ($s_{l_2}$ $\ldots$ $s_{l_2+x-1}$).
Вам нужно заменить каждый символ '?' на строчную латинскую букву так чтобы выполнялись все условия. Среди всех таких строк, найдите лексикографически минимальную.
Строка лексикографический меньше строки , если
- либо первые символов этих строк совпадают, а k $+$ 1-й символ в алфавитном порядке идет раньше k $+$ 1-го символа строки . Например, abcdef < abdaaaa, так как первые два символа совпадают, а третья буква первой строки() в алфавитном порядке идет раньше третьей буквы второй строки().
- либо строка является префиксом строки . Например, abc < abcde. <
Формат входного файла
В первой строке находится одно целое число n($1$ $\le$ $n$ $\le$ $300000$).
Во второй строке находится строка , состоящая из строчных латинских букв и символов '?'.
В третьей строке находится одно целое число m($1$ $\le$ $m$ $\le$ $300000$).
В следующих строках записаны по три целых числа , и ($1$ $\le$ $l_1$, $l_2$ $\le$ $n$ $-$ $x$ $+$ $1$), означающие что подстрока ($s_{l_1}$ $\ldots$ $s_{l_1+x-1}$) равна подстроке ($s_{l_2}$ $\ldots$ $s_{l_2+x-1}$).
Формат выходного файла
Выведите лексикографически минимальную строку, которая удовлетворяет всем условиям, либо , если такой строки не существует.
Примеры
Входные данные
Выходные данные