Codeforces Round 657 (Div. 2) |
---|
Закончено |
Акакий Владиславович изучает строки. Сегодня он столкнулся со следующей задачей.
Дана строка $$$s$$$ длины $$$n$$$, состоящая из строчных букв английского алфавита и знаков вопроса. Можно ли заменить знаки вопроса на строчные буквы английского алфавита так, чтобы в полученную строку строка «abacaba» входила как подстрока ровно один раз?
Каждый знак вопроса должен быть заменён ровно на одну букву. Например, строка «a?b?c» может быть преобразована в строки «aabbc» или «azbzc», но не может быть преобразована в строки «aabc», «a?bbc» или «babbc».
Вхождением строки $$$t$$$ длины $$$m$$$ в строку $$$s$$$ длины $$$n$$$ называется такой индекс $$$i$$$ ($$$1 \leq i \leq n - m + 1$$$), что строка $$$s[i..i+m-1]$$$, образованная последовательными $$$m$$$ символами строки $$$s$$$, начиная с $$$i$$$-го, совпадает со строкой $$$t$$$. Например, в строке «ababa» есть два вхождения строки «aba» как подстроки: $$$i = 1$$$ и $$$i = 3$$$, а в строке «acba» вхождения строки «aba» как подстроки нет.
Помогите Акакию Владиславовичу проверить можно ли заменить все знаки вопроса на строчные буквы английского алфавита так, чтобы в полученную строку строка «abacaba» входила как подстрока ровно один раз.
В первой строке задано число $$$T$$$ ($$$1 \leq T \leq 5000$$$) — количество наборов входных данных. Следующие $$$T$$$ пар строк содержат описания наборов входных данных.
В первой строке описания содержится целое число $$$n$$$ ($$$7 \leq n \leq 50$$$) — длина строки $$$s$$$.
Вторая строка содержит строку $$$s$$$ длины $$$n$$$, состоящую из строчных букв английского алфавита и знаков вопроса.
Для каждого набора входных данных выведите ответ на него.
В случае, если невозможно заменить знаки вопроса в строке $$$s$$$ на строчные буквы английского алфавита так, чтобы в получившейся строке было ровно одно вхождение строки «abacaba» как подстроки, выведите «No».
В противном случае, выведите «Yes», а во второй строке выведите строку, состоящую из $$$n$$$ строчный букв английского алфавита, — полученную строку. Если существует несколько подходящий строк, выведите любую.
Вы можете выводить «Yes» и «No» в любом регистре (например, строки yEs, yes, Yes и YES будут распознаны как положительный ответ).
6 7 abacaba 7 ??????? 11 aba?abacaba 11 abacaba?aba 15 asdf???f???qwer 11 abacabacaba
Yes abacaba Yes abacaba Yes abadabacaba Yes abacabadaba No No
В первом примере в строке «abacaba» есть ровно одно вхождение строки «abacaba» как подстроки, совпадающее со всей строкой.
Во втором примере строка из семи знаков вопроса может быть преобразована в любую строку из семи строчных букв английского алфавита, в том числе и в «abacaba».
В шестом примере в строке есть два вхождения строки «abacaba» как подстроки.
Название |
---|