AT_abc223_f [ABC223F] Parenthesis Checking
Description
[problemUrl]: https://atcoder.jp/contests/abc223/tasks/abc223_f
以下のいずれかの条件を満たす文字列を**正しい括弧列**と定義します。
- 空文字列
- ある**正しい括弧列** $ A $ が存在して、`(`, $ A $, `)` をこの順に連結した文字列
- ある空でない**正しい括弧列** $ A $, $ B $ が存在して、$ A $, $ B $ をこの順に連結した文字列
`(` と `)` のみからなる長さ $ N $ の文字列 $ S $ があります。
$ Q $ 個のクエリ $ \text{Query}_1,\text{Query}_2,\ldots,\text{Query}_Q $ が与えられるので、順番に処理してください。クエリには $ 2 $ 種類があり、入力形式とクエリの内容は以下の通りです。
- `1 l r` : $ S $ の $ l $ 文字目と $ r $ 文字目を入れ替える。
- `2 l r` : $ S $ の $ l $ 文字目から $ r $ 文字目までの連続部分文字列が**正しい括弧列**であるか判定する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ Q $ $ S $ $ \text{Query}_1 $ $ \text{Query}_2 $ $ \vdots $ $ \text{Query}_Q $
Output Format
`2 l r` の形式の各クエリに対して、連続部分文字列が**正しい括弧列**である場合 `Yes`、そうでない場合 `No` と出力し、改行せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N,Q\ \leq\ 2\ \times\ 10^5 $
- $ S $ は `(` と `)` のみからなる長さ $ N $ の文字列
- $ 1\ \leq\ l\