#include typedef long long ll; typedef long double lb; using namespace std; #define all(x) (x).begin(), (x).end() #define OVERLOAD_REP(_1, _2, _3, name, ...) name #define REP1(i, n) for (auto i = std::decay_t{}; (i) != (n); ++(i)) #define REP2(i, l, r) for (auto i = (l); (i) != (r); ++(i)) #define rep(...) OVERLOAD_REP(__VA_ARGS__, REP2, REP1)(__VA_ARGS__) template bool chmin(T& a, const T& b){if(a > b){a = b; return 1;} return 0;} template bool chmax(T& a, const T& b){if(a < b){a = b; return 1;} return 0;} const ll INF = 1000000000000000000; // 10^18 int main(){ ll q; cin >> q; string s = ""; ll cnt = 0; rep(i,q){ ll t; cin >> t; if(t == 1){ string c; cin >> c; s += c; if(s.size() >= 3 && c == ")"){ if(s[s.size()-1] == ')' && s[s.size()-2] == '|' && s[s.size()-3] == '('){ cnt++; } } if(cnt >= 1){ cout << "Yes" << endl; }else{ cout << "No" << endl; } } if(t == 2){ if(s.size() >= 3 && s[s.size()-1] == ')'){ if(s[s.size()-1] == ')' && s[s.size()-2] == '|' && s[s.size()-3] == '('){ cnt--; } } s.erase(s.size()-1); if(cnt >= 1){ cout << "Yes" << endl; }else{ cout << "No" << endl; } } } return 0; }