#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int Q; cin >> Q; vector prev_ver(Q + 1, -1), top_ptr(Q + 1, -1); vector ok(Q + 1, 1); vector parent(Q + 5, -1), state(Q + 5, 0); int node_cnt = 0; int cur = 0; int ver_cnt = 0; auto new_node = [&](int par, int st) { ++node_cnt; parent[node_cnt] = par; state[node_cnt] = st; return node_cnt; }; for (int qi = 0; qi < Q; ++qi) { int t; cin >> t; if (t == 1) { char c; cin >> c; ++ver_cnt; prev_ver[ver_cnt] = cur; top_ptr[ver_cnt] = top_ptr[cur]; ok[ver_cnt] = ok[cur]; if (ok[ver_cnt]) { if (c == '(') { top_ptr[ver_cnt] = new_node(top_ptr[ver_cnt], 0); } else if (c == '|') { int tp = top_ptr[ver_cnt]; if (tp != -1 && state[tp] == 0) { top_ptr[ver_cnt] = new_node(parent[tp], 1); } else { ok[ver_cnt] = 0; } } else { // ')' int tp = top_ptr[ver_cnt]; if (tp != -1 && state[tp] == 1) { top_ptr[ver_cnt] = parent[tp]; } else { ok[ver_cnt] = 0; } } } cur = ver_cnt; } else { cur = prev_ver[cur]; } cout << ((ok[cur] && top_ptr[cur] == -1) ? "Yes\n" : "No\n"); } return 0; }