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

Задача . B. Пасьянс


Мальчик Вася хочет разложить древнерусский пасьянс под названием «Боян». Пасьянс раскладывается по следующим правилам:

  • Колода из n карт тщательно перемешивается, после чего все n карт выкладываются на стол в ряд слева направо;
  • Перед каждым ходом на столе лежат в ряд несколько стопок карт (изначально n стопок, в каждой стопке по одной карте). Пронумеруем эти стопки слева направо от 1 до x. За один ход разрешается целиком переместить стопку с наибольшим номером x (то есть самую правую из оставшихся) на стопку x - 1 (если такая существует) или на стопку x - 3 (если такая существует). При этом одну стопку можно переместить на другую, только если верхние карты этих стопок имеют одинаковые масти или достоинства. Заметим, что если стопка x перемещается на стопку y, верхняя карта стопки x становится верхней картой результирующей стопки. Также заметим, что после каждого хода общее количество стопок уменьшается на 1;
  • Пасьянс считается разложенным, если все карты находятся в одной стопке.

Вася уже перемешал карты и выложил их на стол, помогите ему понять, можно разложить пасьянс из этих карт или нет.

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

В первой строке входных данных записано единственное целое число n (1 ≤ n ≤ 52) — количество карт в колоде Васи. В следующей строке записано n строк через пробел c1, c2, ..., cn, где строка ci описывает i-ую выложенную на стол карту колоды. Каждая строка ci состоит ровно из двух символов, первый символ обозначает достоинство карты, второй — масть. Карты на столе пронумерованы слева направо.

Достоинство карты описывается одним из символов: «2», «3», «4», «5», «6», «7», «8», «9», «T», «J», «Q», «K», «A». Масть карты описывается одним из символов: «S», «D», «H», «C».

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

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

Выведите в единственной строке ответ на задачу: строку «YES» (без кавычек), если разложить пасьянс возможно, строку «NO» (без кавычек) в противном случае.

Примечание

В первом примере можно действовать так:

  • переложить 4-ую стопку на 1-ую;
  • переложить 3-ую стопку на 2-ую;
  • переложить 2-ую стопку на 1-ую.

Во втором примере разложить пасьянс никак нельзя.


Примеры
Входные данныеВыходные данные
1 4
2S 2S 2C 2C
YES
2 2
3S 2C
NO

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

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