Олимпиадный тренинг

Задача . A. Акакий и строка


Акакий Владиславович изучает строки. Сегодня он столкнулся со следующей задачей.

Дана строка \(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 будут распознаны как положительный ответ).

Примечание

В первом примере в строке «abacaba» есть ровно одно вхождение строки «abacaba» как подстроки, совпадающее со всей строкой.

Во втором примере строка из семи знаков вопроса может быть преобразована в любую строку из семи строчных букв английского алфавита, в том числе и в «abacaba».

В шестом примере в строке есть два вхождения строки «abacaba» как подстроки.


time 15000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя