#include using namespace std; #define rep(i, a, b) for (int i = (int)(a); i < (int)(b); i++) #define rrep(i, a, b) for (int i = (int)(a); i > (int)(b); i--) #define ll long long #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define PQ priority_queue, greater> #define PQ_g priority_queue, vector>, greater>> #define chmin(a, b) a = min(a, b) #define chmax(a, b) a = max(a, b) const int d4[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; const int d8[8][2] = {{0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}, {-1, 0}, {-1, 1}}; void Yes(bool b) {cout << (b ? "Yes" : "No") << endl;} int main() { int q; cin >> q; string st; vector is_ender; rep(_, 0, q) { int mode; cin >> mode; if (mode == 1) { char c; cin >> c; if (st.size() >= 2 && st.substr(st.size() - 2, 2) == "(|" && c == ')') { is_ender.push_back(true); st.pop_back(); st.pop_back(); } else { is_ender.push_back(false); st += c; } } else { if (is_ender[is_ender.size() - 1]) { st += "(|"; } else { st.pop_back(); } is_ender.pop_back(); } Yes(st.empty()); } }