#arc149b. [arc149_b]Two LIS Sum

[arc149_b]Two LIS Sum

問題文

数列 P=(P1,ldots,PN)P = (P_1, \\ldots, P_N) に対し,その最長増加部分列の長さを mathrmLIS(P)\\mathrm{LIS}(P) と書くことにします.

11 以上 NN 以下の整数からなる順列 A=(A1,ldots,AN)A = (A_1, \\ldots, A_N) および B=(B1,ldots,BN)B = (B_1, \\ldots, B_N) が与えられます.これらの数列に対して,以下の操作を何度でも行うことができます(00 回でもよいです).

  • 1leqileqN11\\leq i\\leq N-1 となる整数 ii をひとつ選ぶ.AiA_iAi+1A_{i+1} をスワップし,BiB_iBi+1B_{i+1} をスワップする.

操作結果の mathrmLIS(A)+mathrmLIS(B)\\mathrm{LIS}(A) + \\mathrm{LIS}(B) としてありうる最大値を答えてください.

最長増加部分列とは

数列の部分列とは,数列から 00 個以上の要素を取り除いた後,残りの要素を元の順序で連結して得られる数列のことをいいます. 例えば,(10,30)(10,30)(10,20,30)(10,20,30) の部分列ですが,(20,10)(20,10)(10,20,30)(10,20,30) の部分列ではありません.

数列の最長増加部分列とは,数列の狭義単調増加な部分列のうち,長さが最大のもののことをいいます.

制約

  • 2leqNleq3times1052\\leq N\\leq 3\\times 10^5
  • 1leqAileqN1\\leq A_i\\leq N
  • 1leqBileqN1\\leq B_i\\leq N
  • ineqji\\neq j ならば AineqAjA_i\\neq A_j かつ BineqBjB_i\\neq B_j

入力

入力は以下の形式で標準入力から与えられます.

NN A1A_1 ldots\\ldots ANA_N B1B_1 ldots\\ldots BNB_N

出力

操作結果の mathrmLIS(A)+mathrmLIS(B)\\mathrm{LIS}(A) + \\mathrm{LIS}(B) としてありうる最大値を出力してください.


入力例 1

5
5 2 1 4 3
3 1 2 5 4

出力例 1

例えば次のように操作を行うことで,mathrmLIS(A)+mathrmLIS(B)=8\\mathrm{LIS}(A) + \\mathrm{LIS}(B) = 8 を達成できます.

  • i=2i = 2 として操作を行う.A=(5,1,2,4,3)A = (5,1,2,4,3), B=(3,2,1,5,4)B = (3,2,1,5,4) となる.
  • i=1i = 1 として操作を行う.A=(1,5,2,4,3)A = (1,5,2,4,3), B=(2,3,1,5,4)B = (2,3,1,5,4) となる.
  • i=4i = 4 として操作を行う.A=(1,5,2,3,4)A = (1,5,2,3,4), B=(2,3,1,4,5)B = (2,3,1,4,5) となる.

このとき AA は最長増加部分列 (1,2,3,4)(1,2,3,4) を持ち,mathrmLIS(A)=4\\mathrm{LIS}(A)=4 が成り立ちます.BB は最長増加部分列 (2,3,4,5)(2,3,4,5) を持ち,mathrmLIS(B)=4\\mathrm{LIS}(B)=4 が成り立ちます.


入力例 2

5
1 2 3 4 5
1 2 3 4 5

出力例 2

10

操作を 11 度も行わないことにより,mathrmLIS(A)+mathrmLIS(B)=10\\mathrm{LIS}(A) + \\mathrm{LIS}(B) = 10 を達成できます.