#ZF1085. 有好多意识的萝卜

有好多意识的萝卜

Description

一天,一只狸猫作为主驾驶员驾驶一个萝卜去战斗,这个萝卜有着一个主机体和 nn 个子机体,每个子机体需要由一个单独的其他意识来操纵,其中第 ii 个子机体由第 ii 个意识来操纵。

在一场战斗中,狸猫虽然战胜了对手,但由于受到敌方萝卜的数据风暴的影响,原来第 ii 个子机体中的意识变成了 aia_i

为了更好地迎接下一场战斗,狸猫想要让这些意识都回到原来对应的子机体。为此,狸猫可以执行任意次操作:选择两个子机体的编号 x,y (xy,1x,yn)x,y\ (x \ne y,1 \leqslant x,y \leqslant n),交换子机体 xx 和子机体 yy 中的意识,为此狸猫需要承受 wx+wyw_x+w_y 点数据风暴。

狸猫想知道如果把大家都换回去的话自己最少需要承受多少数据风暴。

Format

Input

第一行一个正整数 n (1n105)n\ (1 \leqslant n \leqslant 10^5),表示萝卜的子机体数量。

第二行 nn 个正整数 a1,,an (1ain)a_1,\dots ,a_n\ (1 \leqslant a_i \leqslant n),题目保证对于任意的 x,y (1x,yn,xy)x,y\ (1\leqslant x,y \leqslant n,x\ne y) 满足 axaya_x \ne a_y

第三行 nn 个正整数 w1,,wn(1wi109)w_1,\dots ,w_n(1 \leqslant w_i \leqslant 10^9),表示交换第 ii 个子机体内的意识需要承受的数据风暴。

Output

输出一行,包含一个整数,表示狸猫最少需要承受多少数据风暴。

Samples

4
2 1 4 3
1 1 1 2
5
4
2 4 3 1
1 10 100 1000
1012

Notes

在第一个样例中只需将 1122 交换,3344 交换即可,承受 1+1+1+21+1+1+255 点数据风暴。

在第二个样例中可以按如下顺序交换:

  • 121 \Leftrightarrow 2,交换后的机体意识:[4,2,3,1][4,2,3,1],承受 1+10=111+10=11 点数据风暴;
  • 141 \Leftrightarrow 4,交换后的机体意识:[1,2,3,4][1,2,3,4],承受 1+1000=10011+1000=1001 点数据风暴。

共承受 11+1001=101211 + 1001 = 1012 点数据风暴。

Limitation

1s, 256MB for each test case.