← Home
write a go solution for Description:
Let's denote the following function f. This function takes an array a of length n and returns an array. Initially the result is an empty array. For each integer i from 1 to n we add element a_i to the end of the resulting array if it is greater than all previous elements (more formally, if a_i>maxlimits_1<=j<ia_j). Some examples of the function f:

1. if a=[3,1,2,7,7,3,6,7,8] then f(a)=[3,7,8];
2. if a=[1] then f(a)=[1];
3. if a=[4,1,1,2,3] then f(a)=[4];
4. if a=[1,3,1,2,6,8,7,7,4,11,10] then f(a)=[1,3,6,8,11].

You are given two arrays: array a_1,a_2,...,a_n and array b_1,b_2,...,b_m. You can delete some elements of array a (possibly zero). To delete the element a_i, you have to pay p_i coins (the value of p_i can be negative, then you get |p_i| coins, if you delete this element). Calculate the minimum number of coins (possibly negative) you have to spend for fulfilling equality f(a)=b.

Input Format:
The first line contains one integer n (1<=n<=5*10^5) — the length of array a.

The second line contains n integers a_1,a_2,...,a_n (1<=a_i<=n) — the array a.

The third line contains n integers p_1,p_2,...,p_n (|p_i|<=10^9) — the array p.

The fourth line contains one integer m (1<=m<=n) — the length of array b.

The fifth line contains m integers b_1,b_2,...,b_m (1<=b_i<=n,b_i-1<b_i) — the array b.

Output Format:
If the answer exists, in the first line print YES. In the second line, print the minimum number of coins you have to spend for fulfilling equality f(a)=b.

Otherwise in only line print NO.

Note:
None. Output only the code with no comments, explanation, or additional text.