AT_abc415_f [ABC415F] Max Combo
Description
長さ $ N $ の英小文字からなる文字列 $ S $ があります。以下のクエリを全部で $ Q $ 個処理してください。
- タイプ $ 1 $ : $ S $ の $ i $ 文字目を $ x $ に変更する。
- タイプ $ 2 $ : 現時点の $ S $ の $ l $ 文字目から $ r $ 文字目までを抜き出した文字列を $ t $ とする。この文字列に対して次のように定義される $ f(t) $ を求めよ。
- $ f(t) $ は $ t $ 中の同じ文字の連続の最大長である。
- 厳密には、 $ 1 \le a \le b \le |t| $ かつ $ t $ の $ a $ 文字目から $ b $ 文字目までが全て等しいような整数 $ a,b $ を選ぶとき、 $ f(t) $ は $ b-a+1 $ の値としてありうる最大値である。
- 例えば $ f( $ `aaaccbbbb` $ )=4 $ 、 $ f( $ `bbaaabb` $ )=3 $ 、 $ f( $ `x` $ )=1 $ である。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ Q $ $ S $ $ \rm{Query} $ $ _1 $ $ \rm{Query} $ $ _2 $ $ \vdots $ $ \rm{Query} $ $ _Q $
但し、 $ \rm{Query} $ $ _i $ は $ i $ 個目のクエリを表す。
タイプ $ 1 $ のクエリは以下の形式で与えられる。
> 1 $ i $ $ x $
タイプ $ 2 $ のクエリは以下の形式で与えられる。
> 2 $ l $ $ r $
Output Format
タイプ $ 2 $ のクエリが現れる度に、その解答を $ 1 $ 行に出力せよ。
なお、入出力が大きくなる場合があるので、高速な方法で入出力を行うことを推奨する。
Explanation/Hint
### Sample Explanation 1
この入力には $ 5 $ 個のクエリが含まれます。
- はじめ、文字列 $ S $ は `babaacczcc` です。
- $ 1 $ 番目のクエリはタイプ $ 2 $ で、 $ l=1,r=4 $ です。
- 抜き出した文字列は `baba` であり、 $ f( $ `baba` $ )=1 $ です。
- $ 2 $ 番目のクエリはタイプ $ 1 $ で、 $ i=3,x= $ `a` です。
- 変更後の文字列 $ S= $ `baaaacczcc` です。
- $ 3 $ 番目のクエリはタイプ $ 2 $ で、 $ l=1,r=10 $ です。
- 抜き出した文字列は `baaaacczcc` であり、 $ f( $ `baaaacczcc` $ )=4 $ です。
- $ 4 $ 番目のクエリはタイプ $ 1 $ で、 $ i=8,x= $ `c` です。
- 変更後の文字列 $ S= $ `baaaaccccc` です。
- $ 5 $ 番目のクエリはタイプ $ 2 $ で、 $ l=1,r=10 $ です。
- 抜き出した文字列は `baaaaccccc` であり、 $ f( $ `baaaaccccc` $ )=5 $ です。
### Sample Explanation 2
出力が空である場合もあります。
### Constraints
- $ N $ は $ 1 $ 以上 $ 5 \times 10^5 $ 以下の整数
- $ S $ は英小文字からなる長さ $ N $ の文字列
- $ Q $ は $ 1 $ 以上 $ 5 \times 10^5 $ 以下の整数
- タイプ $ 1 $ のクエリは以下の制約を満たす
- $ i $ は $ 1 $ 以上 $ N $ 以下の整数
- $ x $ は英小文字
- タイプ $ 2 $ のクエリは以下の制約を満たす
- $ l,r $ は $ 1 \le l \le r \le N $ を満たす整数