#include <bits/stdc++.h>
using namespace std;
const long long int N = 200005;
const long long int mod = 1000000007;
const long long int inf = INT64_MAX;
const long double pi = 3.14159265359;
void fastIO(void);
void decimal(int);
long long int modmulti(long long int, long long int);
long long int modadd(long long int, long long int);
long long int modpower(long long int, long long int);
long long int gcd(long long int, long long int);
long long int modinv(long long int);
struct node {
  long long int a;
  long long int t;
} pub[N];
bool cop(struct node p1, struct node p2) { return p1.a < p2.a; }
long long int ans = 0;
void solve(long long int l, long long int r) {
  priority_queue<long long int> pq;
  long long int sum = 0;
  long long int cur = pub[l].a;
  long long int i = l;
  while (i <= r) {
    while (i <= r && pub[i].a == cur) {
      pq.push(pub[i].t);
      sum += pub[i].t;
      i++;
    }
    sum -= pq.top();
    ans += sum;
    pq.pop();
    cur++;
  }
  while (!pq.empty()) {
    sum -= pq.top();
    ans += sum;
    pq.pop();
  }
}
int main() {
  fastIO();
  long long int n;
  cin >> n;
  for (long long int i = 0; i < n; i++) cin >> pub[i].a;
  for (long long int i = 0; i < n; i++) cin >> pub[i].t;
  sort(pub, pub + n, cop);
  for (long long int i = 0; i < n;) {
    long long int j = i + 1;
    while (j < n && pub[j].a - pub[i].a < j - i) j++;
    solve(i, j - 1);
    i = j;
  }
  cout << ans << "\n";
}
void fastIO(void) {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
void decimal(int n) {
  cout << fixed;
  cout << setprecision(n);
}
long long int modmulti(long long int a, long long int b) {
  return ((a % mod) * 1ll * (b % mod)) % mod;
}
long long int modadd(long long int a, long long int b) {
  long long int asdfgh = ((a % mod) + (b % mod) + mod + mod) % mod;
  asdfgh = (asdfgh + mod) % mod;
  return asdfgh;
}
long long int modpower(long long int a, long long int n) {
  if (n == 0) return 1;
  if (n == 1) return a % mod;
  long long int b = modpower(a, n / 2);
  b = modmulti(b, b);
  if (n % 2 == 0) return b;
  return modmulti(a, b);
}
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long int modinv(long long int a) { return modpower(a, mod - 2); }

### Prompt

Generate a Cpp solution to the following problem:

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.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
const long long int N = 200005;
const long long int mod = 1000000007;
const long long int inf = INT64_MAX;
const long double pi = 3.14159265359;
void fastIO(void);
void decimal(int);
long long int modmulti(long long int, long long int);
long long int modadd(long long int, long long int);
long long int modpower(long long int, long long int);
long long int gcd(long long int, long long int);
long long int modinv(long long int);
struct node {
  long long int a;
  long long int t;
} pub[N];
bool cop(struct node p1, struct node p2) { return p1.a < p2.a; }
long long int ans = 0;
void solve(long long int l, long long int r) {
  priority_queue<long long int> pq;
  long long int sum = 0;
  long long int cur = pub[l].a;
  long long int i = l;
  while (i <= r) {
    while (i <= r && pub[i].a == cur) {
      pq.push(pub[i].t);
      sum += pub[i].t;
      i++;
    }
    sum -= pq.top();
    ans += sum;
    pq.pop();
    cur++;
  }
  while (!pq.empty()) {
    sum -= pq.top();
    ans += sum;
    pq.pop();
  }
}
int main() {
  fastIO();
  long long int n;
  cin >> n;
  for (long long int i = 0; i < n; i++) cin >> pub[i].a;
  for (long long int i = 0; i < n; i++) cin >> pub[i].t;
  sort(pub, pub + n, cop);
  for (long long int i = 0; i < n;) {
    long long int j = i + 1;
    while (j < n && pub[j].a - pub[i].a < j - i) j++;
    solve(i, j - 1);
    i = j;
  }
  cout << ans << "\n";
}
void fastIO(void) {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
void decimal(int n) {
  cout << fixed;
  cout << setprecision(n);
}
long long int modmulti(long long int a, long long int b) {
  return ((a % mod) * 1ll * (b % mod)) % mod;
}
long long int modadd(long long int a, long long int b) {
  long long int asdfgh = ((a % mod) + (b % mod) + mod + mod) % mod;
  asdfgh = (asdfgh + mod) % mod;
  return asdfgh;
}
long long int modpower(long long int a, long long int n) {
  if (n == 0) return 1;
  if (n == 1) return a % mod;
  long long int b = modpower(a, n / 2);
  b = modmulti(b, b);
  if (n % 2 == 0) return b;
  return modmulti(a, b);
}
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long int modinv(long long int a) { return modpower(a, mod - 2); }

```