AT_abc473_f [ABC473F] A/AB Insertion
Description
長さ $ N $ の `A`, `B` からなる文字列 $ S $ が与えられます。
以下のクエリを合計 $ Q $ 個処理してください。
> 1 $ i $ $ c $
タイプ $ 1 $ : $ S $ の $ i $ 文字目を $ c $ に変更する。
> 2 $ l $ $ r $
タイプ $ 2 $ :
文字列 $ T $ を、現在の文字列 $ S $ の $ l $ 文字目から $ r $ 文字目までを抜き出した文字列とする。
文字列 $ T $ が以下の操作で得られる文字列であれば `Yes` 、そうでなければ `No` と出力する。
> - 空文字列から始め、以下の $ 2 $ つの操作を好きな順序で $ 0 $ 回以上何回でも行う。
> - 文字列の(先頭・末尾を含めた)任意の箇所を選択し、そこに `A` を挿入する。
> - 文字列の(先頭・末尾を含めた)任意の箇所を選択し、そこに `AB` を挿入する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ S $ $ Q $ $ {\rm Query}_1 $ $ {\rm Query}_2 $ $ \vdots $ $ {\rm Query}_Q $
但し、 $ {\rm Query}_i $ は $ i $ 個目のクエリを表し、クエリの入力は問題文中の形式に従う。
Output Format
タイプ $ 2 $ のクエリが入力されるごとに、答えを $ 1 $ 行に出力せよ。
Explanation/Hint
### Sample Explanation 1
この入力には $ 6 $ 個のクエリが含まれます。
- 最初、 $ S= $ `AABBAABABB` です。
- $ 1 $ つ目のクエリについて、 $ S $ の $ 1 $ 文字目から $ 10 $ 文字目までを抜き出した $ T= $ `AABBAABABB` は以下の手順を踏むことで得ることができるため、 `Yes` と出力します。
- 空文字列から始める。
- 空文字列の先頭に `AB` を挿入し、文字列が `AB` となる。
- `AB` の $ 1 $ 文字目の直後に `AB` を挿入し、文字列が `AABB` となる。
- `AABB` の末尾に `AB` を挿入し、文字列が `AABBAB` となる。
- `AABBAB` の $ 5 $ 文字目の直後に `AB` を挿入し、文字列が `AABBAABB` となる。
- `AABBAABB` の $ 7 $ 文字目の直後に `AB` を挿入し、文字列が `AABBAABABB` となる。
- $ 2 $ つ目のクエリについて、 $ S $ の $ 5 $ 文字目を `B` に変更します。その結果、 $ S= $ `AABBBABABB` となります。
- $ 3 $ つ目のクエリについて、 $ S $ の $ 1 $ 文字目から $ 10 $ 文字目までを抜き出した $ T= $ `AABBBABABB` は問題文中の操作では得られないため、 `No` と出力します。
- $ 4 $ つ目のクエリについて、 $ S $ の $ 6 $ 文字目から $ 8 $ 文字目までを抜き出した $ T= $ `ABA` は問題文中の操作で得ることができるため、 `Yes` と出力します。
- $ 5 $ つ目のクエリについて、 $ S $ の $ 3 $ 文字目を `A` に変更します。その結果、 $ S= $ `AAABBABABB` となります。
- $ 6 $ つ目のクエリについて、 $ S $ の $ 1 $ 文字目から $ 10 $ 文字目までを抜き出した $ T= $ `AAABBABABB` は問題文中の操作で得ることができるため、 `Yes` と出力します。
### Constraints
- $ N $ は $ 1 \le N \le 5 \times 10^5 $ を満たす整数
- $ S $ は `A`, `B` からなる長さ $ N $ の文字列
- $ Q $ は $ 1 \le Q \le 2 \times 10^5 $ を満たす整数
- 与えられるクエリはタイプ $ 1,2 $ のいずれかである
- タイプ $ 1 $ のクエリは以下の制約を満たす
- $ i $ は $ 1 \le i \le N $ を満たす整数
- $ c $ は `A`, `B` のいずれか
- タイプ $ 2 $ のクエリは以下の制約を満たす
- $ l,r $ は $ 1 \le l \le r \le N $ を満たす整数