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\