AT_agc074_b [AGC074B] Swap if Equal Length and Sum
Description
$ 0 $ と $ 1 $ からなる長さ $ N $ の整数列 $ A=(A_1,A_2,\dots,A_N),\; B=(B_1,B_2,\dots,B_N) $ が与えられます。 数列 $ A $ の $ i $ 番目から $ j $ 番目の連続部分列を $ A[i,j] $ と表すことにします。ただし、 $ i>j $ のとき、 $ A[i,j] $ は長さ $ 0 $ の数列とします。 $ A $ に対して、以下の操作を $ \lfloor\frac{N}{2}\rfloor $ 回まで行えます。
- 以下の $ 3 $ 条件を満たす $ 4 $ 整数 $ a,b,c,d $ を選ぶ。
- $ 1 \leq a \leq b < c \leq d \leq N $
- $ b-a=d-c $
- $ \sum_{i=a}^{b}{A_i}=\sum_{i=c}^{d}{A_i} $
- $ A[a,b] $ と $ A[c,d] $ を入れ替える。より厳密には、 $ A $ を、 $ A[1,a-1] $ , $ A[c,d] $ , $ A[b+1,c-1] $ , $ A[a,b] $ , $ A[d+1,N] $ の順に結合した数列に置き換える。
$ A $ を $ B $ に一致させることが可能かどうかを判定して、可能ならばその操作手順を $ 1 $ つ構成してください。
$ 1 $ つの入力につき、 $ T $ 個のテストケースを解いてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ T $ $ case_1 $ $ case_2 $ $ \vdots $ $ case_T $
各ケースは以下の形式で与えられる。
> $ N $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $ $ B_1 $ $ B_2 $ $ \dots $ $ B_N $
Output Format
答えを以下の形式で出力せよ。
> $ output_1 $ $ output_2 $ $ \vdots $ $ output_T $
ここで、 $ output_t $ は $ t $ 番目のテストケースへの出力を表す。
各ケースでは、 $ A $ を $ B $ に一致させられるならば、必要な操作回数を $ K $ 回、 $ k $ 回目の操作で選ぶ $ (a,b,c,d) $ を $ (a_k,b_k,c_k,d_k) $ として、以下の形式で出力せよ。
> Yes $ K $ $ a_1 $ $ b_1 $ $ c_1 $ $ d_1 $ $ a_2 $ $ b_2 $ $ c_2 $ $ d_2 $ $ \vdots $ $ a_K $ $ b_K $ $ c_K $ $ d_K $
$ A $ を $ B $ に一致させることが不可能ならば `No` を出力せよ。
Explanation/Hint
### Sample Explanation 1
$ 1 $ つ目のテストケースでは、 $ A $ は最初、 $ (1,0,0,1,0,1,0,1) $ です。
$ (a,b,c,d)=(3,4,6,7) $ を選んで操作を行うと、 $ A $ は $ (1,0,1,0,0,0,1,1) $ になります。
次に、 $ (a,b,c,d)=(1,4,5,8) $ を選んで操作を行うと、 $ A $ は $ (0,0,1,1,1,0,1,0) $ になり、 $ B $ に一致します。
$ 2 $ つ目のテストケースでは、 $ A $ を $ B $ に一致させることはできません。
$ 3 $ つ目のテストケースでは、 $ A $ は最初から $ B $ に一致しています。
### Constraints
- $ 1 \leq T \leq 25000 $
- $ 2 \leq N \leq 2 \times 10^5 $
- $ 0 \leq A_i \leq 1 $
- $ 0 \leq B_i \leq 1 $
- 全てのテストケースにおける $ N $ の総和は $ 2\times 10^5 $ 以下
- 入力される値は全て整数