# 各ステップでの「簡約済みスタック」を保存するリスト # history[i] = ステップi終了時点でのスタックの状態 history = [[]] for q in queries: if type == 1: # 追加 new_stack = history[-1][:] # 前の状態をコピー new_stack.append(char) # 末尾が (|) なら削除 while len(new_stack) >= 3 and new_stack[-3:] == ['(', '|', ')']: new_stack.pop(); new_stack.pop(); new_stack.pop() history.append(new_stack) else: # 削除 history.pop() # 1つ前の状態に戻るだけ print("Yes" if len(history[-1]) == 0 else "No")