#include #include #include #include using namespace std; using ll = long long; #define rep(i, n) for(int i=0; i loc; Node* root = new Node(nullptr, nullptr); loc.emplace(root); ll q; cin >> q; ll len = 0; ll error = -1; rep(i, q) { ll type; cin >> type; if(type == 1) { len++; char c; cin >> c; if(error > len) { cout << "No" << endl; continue; } else if(c == '(') { auto c2 = new Node(nullptr, loc.top()); auto c1 = new Node(c2, nullptr); loc.emplace(c1); } else if(c == '|') { if(loc.top()->left == nullptr) { error = len; cout << "No" << endl; continue; } else { loc.emplace(loc.top()->left); } } else { if(loc.top()->parent == nullptr) { error = len; cout << "No" << endl; continue; } else { loc.emplace(loc.top()->parent); } } } else { len--; if(len == error-1) { error = -1; } else if(len <= error) { cout << "No" << endl; continue; } else { loc.pop(); } } if(loc.top() == root) { cout << "Yes" << endl; }else { cout << "No" << endl; } } }