import sys def load_data(file_path): nfa = {} with open(file_path, 'r') as file: for line in file: split_data = line.strip().split('\t') if len(split_data) == 3: state, next_state, symbol = split_data key = (int(state), symbol) if key in nfa: nfa[key].add(int(next_state)) else: nfa[key] = {int(next_state)} return nfa def is_accepted(nfa, input, current_states, accepting_states): for symbol in input: new_states = set() for state in current_states: key = (state, symbol) if key in nfa: new_states.update(nfa[key]) current_states = new_states return any(state in accepting_states for state in current_states) # Set of accepting states accepting_states = {3,4} nfa_file = sys.argv[1] nfa = load_data(nfa_file) for line in sys.stdin: input_str = line.strip() start_states = {0} if is_accepted(nfa, input_str, start_states, accepting_states): print("YES") else: print("NO")