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

Задача . A. Тройная красота


Задача

Темы: реализация *1300

Мечтая о красотах весны, художник Аркадий подготовил очень длинный холст.

У Аркадия много красок трех цветов: цианового, пурпурного и желтого. Одномерный холст разбит на n отрезков, следующих один за другим, и каждый отрезок надо покрасить в один из этих трех цветов.

Аркадий уже раскрасил несколько (возможно, ни одного) отрезков и отдал кисть вам. Вы хотите определить, существуют ли хотя бы два различных способа раскрасить еще не покрашенные отрезки так, чтобы не было двух соседних отрезков одного цвета. Два способа считаются различными, если и только если существует отрезок, покрашенный в этих двух способах в разные цвета.

Входные данные

Первая строка содержит одно целое число n (1 ≤ n ≤ 100) — длину холста.

Вторая строка содержит строку s из n символов, где i-й символ равен «C» (обозначает отрезок, покрашенный в циановый цвет), «M» (отрезок, покрашенный в пурпурный цвет), «Y» (в желтый) или «?» (еще не покрашенный отрезок).

Выходные данные

Если существуют два различных способа покрасить оставшиеся участки холста, удовлетворяя условию, выведите «Yes», иначе выведите «No» (без кавычек).

Вы можете выводить каждую букву в любом регистре (строчную или заглавную).

Примечание

В первом примере есть ровно два различных способа раскрасить холст: CYCMY и CYMCY.

Во втором примере тоже есть ровно два способа: CMCMY и CYCMY.

В третьем примере есть четыре способа: MCYCM, MCYCY, YCYCM и YCYCY.

В четвертом примере независимо от того, как покрасить не покрашенные отрезки, существующие отрезки пурпурного цвета не дадут холсту удовлетворять условию. То же верно для пятого примера.


Примеры
Входные данныеВыходные данные
1 5
CY??Y
Yes
2 5
C?C?Y
Yes
3 5
?CYC?
Yes
4 5
C??MM
No
5 3
MMY
No

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

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