AT_abc331_f [ABC331F] Palindrome Query
Description
[problemUrl]: https://atcoder.jp/contests/abc331/tasks/abc331_f
英小文字からなる長さ $ N $ の文字列 $ S $ が与えられます。
以下で説明されるクエリを与えられる順に $ Q $ 個処理してください。
クエリは次の $ 2 $ 種類のいずれかです。
- `1 x c` : $ S $ の $ x $ 文字目を英小文字 $ c $ に変更する。
- `2 L R` : $ S $ の $ L $ 文字目から $ R $ 文字目までからなる部分文字列が回文であるならば `Yes` を、そうでないならば `No` を出力する。
Input Format
入力は以下の形式で標準入力から与えられる。ここで $ \text{query}_i $ は $ i $ 番目に処理するクエリである。
> $ N $ $ Q $ $ S $ $ \text{query}_1 $ $ \text{query}_2 $ $ \vdots $ $ \text{query}_Q $
各クエリは以下のいずれかの形式で与えられる。
> $ 1 $ $ x $ $ c $
> $ 2 $ $ L $ $ R $
Output Format
問題文の指示に従ってクエリへの答えを改行区切りで出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 10^6 $
- $ 1\ \leq\ Q\ \leq\ 10^5 $
- $ S $ は英小文字からなる長さ $ N $ の文字列
- $ 1\ \leq\ x\ \leq\ N $
- $ c $ は英小文字
- $ 1\ \leq\ L\ \leq\ R\ \leq\ N $
- $ N,\ Q,\ x,\ L,\ R $ は整数
### Sample Explanation 1
はじめ、$ S\ = $ `abcbacb` です。 $ 1 $ 番目のクエリについて、$ S $ の $ 1 $ 文字目から $ 5 $ 文字目までからなる文字列は `abcba` で、これは回文です。よって `Yes` を出力します。 $ 2 $ 番目のクエリについて、$ S $ の $ 4 $ 文字目から $ 7 $ 文字目までからなる文字列は `bacb` で、これは回文ではありません。よって `No` を出力します。 $ 3 $ 番目のクエリについて、$ S $ の $ 2 $ 文字目から $ 2 $ 文字目までからなる文字列は `b` で、これは回文です。よって `Yes` を出力します。 $ 4 $ 番目のクエリについて、$ S $ の $ 5 $ 文字目を `c` に変更します。$ S $ は `abcbccb` になります。 $ 5 $ 番目のクエリについて、$ S $ の $ 1 $ 文字目から $ 5 $ 文字目までからなる文字列は `abcbc` で、これは回文ではありません。よって `No` を出力します。 $ 6 $ 番目のクエリについて、$ S $ の $ 4 $ 文字目から $ 7 $ 文字目までからなる文字列は `bccb` で、これは回文です。よって `Yes` を出力します。 $ 7 $ 番目のクエリについて、$ S $ の $ 4 $ 文字目を `c` に変更します。$ S $ は `abccccb` になります。 $ 8 $ 番目のクエリについて、$ S $ の $ 3 $ 文字目から $ 6 $ 文字目までからなる文字列は `cccc` で、これは回文です。よって `Yes` を出力します。