Технокубок 2019 - Отборочный Раунд 4 |
---|
Закончено |
У Васи есть три строки $$$s$$$, $$$a$$$ и $$$b$$$, состоящие из первых $$$k$$$ букв латинского алфавита.
Назовем паттерном строку длины $$$k$$$, где каждая из первых $$$k$$$ букв латинского алфавита встречается ровно один раз (таким образом, существует ровно $$$k!$$$ различных паттернов). Применение паттерна $$$p$$$ к строке $$$s$$$ — это замена каждой буквы строки $$$s$$$ на $$$p_i$$$, где $$$i$$$ – это порядковый номер этой буквы в латинском алфавите. Например, применив паттерн «bdca» к строке «aabccd» мы получим строку «bbdcca».
Васю интересует, существует ли такой паттерн, применив который к строке $$$s$$$, он получит строку, лексикографически больше либо равную строки $$$a$$$ и лексикографически меньше либо равную строки $$$b$$$.
Если существует несколько подходящих паттернов, разрешается вывести любой.
Строка $$$a$$$ лексикографически меньше строки $$$b$$$, если существует такое $$$i$$$ ($$$1 \le i \le n$$$), что $$$a_i < b_i$$$, а для любого $$$j$$$ ($$$1 \le j < i$$$) $$$a_j = b_j$$$.
В этой задаче вам необходимо ответить на $$$t$$$ независимых тестовых наборов.
Первая строка входных данных содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^6$$$) — количество тестовых наборов.
Во взломах можно использовать только $$$t = 1$$$.
Каждая из следующих $$$t$$$ строк содержит описание тестового набора в следующем формате:
Первая строка тестового набора содержит целое число $$$k$$$ ($$$1 \le k \le 26$$$) — длина необходимого паттерна.
Вторая строка тестового набора содержит строку $$$s$$$ ($$$1 \le |s| \le 10^6$$$).
Третья строка тестового набора содержит строку $$$a$$$.
Четвертая строка тестового набора содержит строку $$$b$$$.
Строки $$$s$$$, $$$a$$$ и $$$b$$$ имеют одинаковую длину ($$$|s| = |a| = |b|$$$) и состоят из первых $$$k$$$ букв латинского алфавита, все буквы строчные.
Гарантируется, что строка $$$a$$$ лексикографически меньше либо равна строке $$$b$$$.
Также гарантируется, что сумма длин строк по всем тестовым наборам не превосходит $$$3 \cdot 10^6$$$.
На каждый тестовый набор выведите ответ в следующем формате:
Если не существует подходящего паттерна, то в первой строке выведите «NO».
Иначе в первой строке выведите «YES», а во второй сам паттерн ($$$k$$$ строчных букв, каждая из первых $$$k$$$ букв латинского алфавита должна встретиться ровно один раз).
Если существует несколько подходящих паттернов — разрешается вывести любой.
2
4
bbcb
aada
aada
3
abc
bbb
bbb
YES
badc
NO
Название |
---|