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

Задача . C. Трубы


Вам задана система труб. Она состоит из двух рядов, каждый из которых состоит из \(n\) труб. Верхняя левая труба имеет координаты \((1, 1)\), а нижняя правая — \((2, n)\).

Всего существует шесть типов труб: два типа прямых труб и четыре типа изогнутых труб. Ниже приведены примеры всех шести типов:

Типы труб

Вы можете поворачивать каждую из заданных труб на \(90\) градусов по часовой или против часовой стрелки любое (возможно, нулевое) количество раз (таким образом, типы \(1\) и \(2\) могут переходить друг в друга, а также \(3, 4, 5, 6\) могут переходить друг в друга).

Вы хотите повернуть некоторые трубы таким образом, чтобы поток воды мог начать свое движение в \((1, 0)\) (слева от верхней левой трубы), пойти по трубе в \((1, 1)\), как-то потечь по связным трубам до трубы \((2, n)\) и потечь вправо в \((2, n + 1)\).

Трубы называются связными, если они являются соседними в системе и их концы соединены. Ниже несколько примеров связных труб:

Примеры связных труб

Попробуем описать задачу при помощи примера:

Входные данные первого примера

И его решение ниже:

Решение первого примера

Как вы можете заметить, поток воды — это плохо нарисованная синяя линия. Чтобы достичь ответа, нам необходимо повернуть трубу на позиции \((1, 2)\) на \(90\) градусов по часовой стрелке, трубу на позиции \((2, 3)\) на \(90\) градусов, трубу на позиции \((1, 6)\) на \(90\) градусов, трубу на позиции \((1, 7)\) на \(180\) градусов и трубу на позиции \((2, 7)\) на \(180\) градусов. Тогда поток воды сможет достичь \((2, n + 1)\) из \((1, 0)\).

Вам необходимо ответить на \(q\) независимых запросов.

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

Первая строка входных данных содержит одно целое число \(q\) (\(1 \le q \le 10^4\)) — количество запросов. Затем следуют \(q\) запросов.

Каждый запрос состоит ровно из трех строк. Первая строка запроса содержит одно целое число \(n\) (\(1 \le n \le 2 \cdot 10^5\)) — количество труб в каждом ряду. Следующие две строки содержат описания первого и второго рядов соответственно. Описание каждого ряда состоит из \(n\) цифр от \(1\) до \(6\) без каких-либо пробелов между ними, каждая цифра соответствует типу трубы в соответствующей клетке. Прочтите условие задачи, чтобы понять, какие цифры соответствуют каким типам труб.

Гарантируется, что сумма \(n\) по всем запросам не пресоходит \(2 \cdot 10^5\).

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

Для \(i\)-го запроса выведите ответ на него — «YES» (без кавычек), если возможно повернуть некоторые трубы таким образом, чтобы поток воды смог достичь \((2, n + 1)\) из \((1, 0)\), и «NO» иначе.

Примечание

Первый запрос из тестового примера описан в условии задачи.


Примеры
Входные данныеВыходные данные
1 6
7
2323216
1615124
1
3
4
2
13
24
2
12
34
3
536
345
2
46
54
YES
YES
YES
NO
YES
NO

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

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