import sys

sys.setrecursionlimit(5000)

arg = [['0' ,'0' ,'b'],
['0', '0', 'c'],
['0', '1', 'a'],
['1', '1', 'a'],
['1', '2', 'b'],
['2', '1', 'a'],
['2', '3', 'c'],
['3', '3', 'a'],
['3', '3', 'b'],
['3', '3', 'c'],
['2', '0', 'b'],
['1', '0', 'c'],
'3']
def write_answer(answer):
    with open(output_file, 'a') as file:
        file.write(answer+'\n')

def line_checking(row, position):
    stack = [(row, position)]

    while stack:
        help_row, help_position = stack.pop()
        if help_row == '\n':
            if help_position in what_is_the_ended_positions():
                return True
            else:
                return False
        next_character_array = find_next_position(help_position, help_row[0])
        if next_character_array:
            for element_in_next_position_array in next_character_array:

                stack.append((help_row[1:], element_in_next_position_array))

    return False

def find_next_position(position, character):
    take_all_possible_positions = []
    for row_used_table in arg:
        if len(row_used_table) != 1:
            if position == row_used_table[0] and character == row_used_table[2]:
                take_all_possible_positions.append(row_used_table[1])

    return take_all_possible_positions

def what_is_the_ended_positions():
    array = []
    for row in arg:
        if len(row) == 1:
            array += row
    return array

# used_table = 'test.arg'
# input_file = 'test.in'
# output_file = 'test.out'
# used_table = sys.argv[1]
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(output_file, 'w') as readed_output_file:
    with open(input_file, 'r') as readed_input_file:
        for row_input_file in readed_input_file:
            if line_checking(row_input_file, '0'):
                write_answer('YES')
            else:
                write_answer('NO')
