AT_abc428_c [ABC428C] Brackets Stack Query

Description

文字列 $ T $ が次の条件を満たすとき、 $ T $ を良い括弧列と呼びます。 - 次の操作を $ 0 $ 回以上繰り返すことで $ T $ を空文字列にすることができる。 - $ T $ に(連続な)部分文字列として含まれる `()` を選び、これを取り除く。 例えば `()` や `(()())`, および空文字列は良い括弧列ですが、`)()(` や `)))` は良い括弧列ではありません。 文字列 $ S $ があります。 $ S $ ははじめ空文字列です。 以下で説明されるクエリを与えられる順に $ Q $ 個処理してください。そして、各クエリの直後に $ S $ が良い括弧列であるかを判定してください。 クエリは次の $ 2 $ 種類です。 - `1 c`: 文字 $ c $ が与えられる。 $ c $ は `(` または `)` である。 $ c $ を $ S $ の末尾に追加する。 - `2`: $ S $ の末尾の文字を削除する。この時、 $ S $ は空文字列でないことが保証される。

Input Format

入力は以下の形式で標準入力から与えられる。ここで $ \mathrm{query}_i $ は $ i $ 番目のクエリを意味する。 > $ Q $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $ 各クエリは以下の $ 2 $ 種類のいずれかの形式で与えられる。 > $ 1 $ $ c $ > $ 2 $

Output Format

$ Q $ 行出力せよ。 $ i $ 行目には、 $ i $ 番目のクエリを処理した直後の文字列 $ S $ が良い括弧列である場合は `Yes` を、そうでない場合は `No` を出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のクエリを処理した直後の $ S $ は `(` で、これは良い括弧列ではありません。 $ 2 $ 番目のクエリを処理した直後の $ S $ は空文字列で、これは良い括弧列です。 $ 3 $ 番目のクエリを処理した直後の $ S $ は `(` で、これは良い括弧列ではありません。 $ 4 $ 番目のクエリを処理した直後の $ S $ は `()` で、これは良い括弧列です。 $ 5 $ 番目のクエリを処理した直後の $ S $ は `(` で、これは良い括弧列ではありません。 $ 6 $ 番目のクエリを処理した直後の $ S $ は `((` で、これは良い括弧列ではありません。 $ 7 $ 番目のクエリを処理した直後の $ S $ は `(()` で、これは良い括弧列ではありません。 $ 8 $ 番目のクエリを処理した直後の $ S $ は `(())` で、これは良い括弧列です。 ### Constraints - $ 1 \leq Q \leq 8 \times 10^5 $ - $ 1 $ 種類目のクエリの $ c $ は `(` または `)` - $ 2 $ 種類目のクエリを与えられた時点で $ S $ は空でないことが保証される - $ Q $ は整数