VK news recommendation system daily selects interesting publications of one of n disjoint categories for each user. Each publication belongs to exactly one category. For each category i batch algorithm selects a_i publications.

The latest A/B test suggests that users are reading recommended publications more actively if each category has a different number of publications within daily recommendations. The targeted algorithm can find a single interesting publication of i-th category within t_i seconds. 

What is the minimum total time necessary to add publications to the result of batch algorithm execution, so all categories have a different number of publications? You can't remove publications recommended by the batch algorithm.

Input

The first line of input consists of single integer n — the number of news categories (1 ≤ n ≤ 200 000).

The second line of input consists of n integers a_i — the number of publications of i-th category selected by the batch algorithm (1 ≤ a_i ≤ 10^9).

The third line of input consists of n integers t_i — time it takes for targeted algorithm to find one new publication of category i (1 ≤ t_i ≤ 10^5).

Output

Print one integer — the minimal required time for the targeted algorithm to get rid of categories with the same size.

Examples

Input


5
3 7 9 7 8
5 2 5 7 5


Output


6


Input


5
1 2 3 4 5
1 1 1 1 1


Output


0

Note

In the first example, it is possible to find three publications of the second type, which will take 6 seconds.

In the second example, all news categories contain a different number of publications.

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;

public class Main {

    static Scanner sc = null;
    static PrintWriter pw = null;

    static {

        try {
            sc = new Scanner(System.in);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static final long MOD = 1_000_000_007;

    private static String data;

    /**
     * 5
     * 7 9 7 8
     * 2 5 7 5
     * <p>
     * 7 7 8 9
     * 2 7 5 5
     */


    public static void main(String[] args) {
        int n = sc.nextInt();
        int[][] data = new int[n][2];
        for (int s = 0; s < n; s++) {
            data[s][0] = sc.nextInt();
        }
        for (int s = 0; s < n; s++) {
            data[s][1] = sc.nextInt();
        }
        long ans = 0;
        Arrays.sort(data, Comparator.comparingInt(l -> l[0]));

        long sum = 0;
        int last = 0;

        PriorityQueue<Integer> curPr = new PriorityQueue<>((r1, r2) -> r2-r1);

        for (int t = 0 ; t < n ; t++) {
            int curv = data[t][0];
            while ((last + 1) < curv && curPr.size() > 0) {
                sum -= curPr.poll();
                ans += sum;
                last++;
            }
            last = data[t][0];

            sum += data[t][1];
            curPr.add(data[t][1]);
            if ((t + 1) < n && data[t][0] == data[t + 1][0]) {
                continue;
            }
            sum -= curPr.poll();
            ans += sum;
        }
        while (curPr.size() > 0) {
            sum -= curPr.poll();
            ans += sum;
            last++;
        }


        System.out.println(ans);

    }


}
