AT_aalc001_l 数列間の swap
Description
長さ $ N $ の整数列 $ A=(A_1,A_2,\ldots,A_N) $ 、 $ B=(B_1,B_2,\ldots,B_N) $ 、 $ C=(C_1,C_2,\ldots,C_N) $ が与えられます。
クエリを $ Q $ 個処理してください。クエリは以下の $ 4 $ 種類のいずれかです。
- `1 l r`: $ l\leq k\leq r $ を満たすすべての整数 $ k $ について、 $ A_k $ と $ B_k $ を入れ替える。
- `2 l r`: $ l\leq k\leq r $ を満たすすべての整数 $ k $ について、 $ B_k $ と $ C_k $ を入れ替える。
- `3 l r`: $ l\leq k\leq r $ を満たすすべての整数 $ k $ について、 $ C_k $ と $ A_k $ を入れ替える。
- `4 i`: $ i\leq j\leq N $ かつ $ \displaystyle\sum_{k=i}^{j}A_k\gt0 $ を満たす整数 $ j $ のうち、最小のものを出力する。そのような $ j $ が存在しない場合は $ N+1 $ を出力する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ B_1 $ $ B_2 $ $ \ldots $ $ B_N $ $ C_1 $ $ C_2 $ $ \ldots $ $ C_N $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $
各クエリは以下のいずれかの形式で与えられる。
> $ 1 $ $ l $ $ r $
> $ 2 $ $ l $ $ r $
> $ 3 $ $ l $ $ r $
> $ 4 $ $ i $
Output Format
$ 4 $ 種類目のクエリの個数を $ q $ として、 $ q $ 行出力せよ。 $ j $ 行目には、 $ j $ 番目の $ 4 $ 種類目のクエリに対する答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
$ 1 $ 番目のクエリでは、 $ A_2=-4\leq 0 $ 、 $ A_2+A_3=1>0 $ なので、 $ 3 $ を出力します。
$ 2 $ 番目のクエリを処理した後、 $ A=(3,6,-3,4,1) $ となります。
$ 3 $ 番目のクエリでは、 $ A_1=3\gt0 $ なので、 $ 1 $ を出力します。
### Constraints
- $ 1\leq N\leq 10^5 $
- $ 1\leq Q\leq 10^5 $
- $ -10^9\leq A_i,B_i,C_i\leq 10^9 $
- $ 1,2,3 $ 種類目のクエリについて、 $ 1\leq l\leq r\leq N $
- $ 4 $ 種類目のクエリについて、 $ 1\leq i\leq N $
- 入力される数値はすべて整数