#include #include std::string T; std::vector stick = {true}; int height = 0, i = 0, valid_len = 0; void push(char c) { switch(c) { case '|':{ if (!stick[height]) { stick[height] = true; valid_len ++; } break; } case '(':{ height ++; if (stick.size() == height) { stick.push_back(false); } stick[height] = false; valid_len ++; break; } case ')':{ if (height > 0) { if (stick[height]) { valid_len ++; } height --; } break; } } } void pop() { switch(T.back()) { case '|':{ stick[height] = false; break; } case '(':{ height --; break; } case ')':{ height ++; stick[height] = true; break; } } valid_len --; } bool op(int type, char c = 0) { switch(type) { case 1:{ T += c; if (i <= valid_len) { push(c); } i ++; break; } case 2:{ if (i <= valid_len) { pop(); } T.pop_back(); i --; break; } } return height == 0 && i == valid_len; } int main() { int Q; std::cin >> Q; while(Q--) { int type; char c = 0; std::cin >> type; if (type == 1) std::cin >> c; puts(op(type, c) ? "Yes" : "No"); } }