#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int Q; cin >> Q; // 题目 Q 约为 8e5,开到 Q+5 足够 vector parent(Q + 5, 0); // 持久化栈前驱 vector state(Q + 5, 0); // state[len] = 当前原串长度为 len 时的化简栈顶 vector val(Q + 5, 0); // 当前节点存的字符 int tot = 0; // 节点总数 int len = 0; // 当前原串长度 for (int i = 0; i < Q; i++) { int t; cin >> t; if (t == 1) { char c; cin >> c; int cur = state[len]; int nxt; // 只有在化简栈末尾是 "(|" 且新字符是 ')' 时,才能消掉 if (c == ')' && cur != 0 && val[cur] == '|' && parent[cur] != 0 && val[parent[cur]] == '(') { nxt = parent[parent[cur]]; // 消去 "(|)" } else { ++tot; val[tot] = c; parent[tot] = cur; nxt = tot; } ++len; state[len] = nxt; } else { // 删除最后一个字符 --len; } cout << (state[len] == 0 ? "Yes" : "No") << '\n'; } return 0; }