#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int Q; cin >> Q; // 持久化栈 vector par(Q + 5, 0), state(Q + 5, 0); vector val(Q + 5, 0); int nodes = 0; // 已创建节点数 int len = 0; // 当前原串长度 for (int qi = 0; qi < Q; ++qi) { int t; cin >> t; if (t == 1) { char c; cin >> c; int cur = state[len]; int nxt = 0; // 如果追加 ')',并且当前化简串末尾是 "(|" if (c == ')' && cur != 0 && val[cur] == '|' && par[cur] != 0 && val[par[cur]] == '(') { // 消掉 "(|)" nxt = par[par[cur]]; } else { // 否则直接压栈 ++nodes; val[nodes] = c; par[nodes] = cur; nxt = nodes; } state[++len] = nxt; } else { // 删除最后一个字符:直接回退一个长度 --len; } cout << (state[len] == 0 ? "Yes" : "No") << '\n'; } return 0; }