#include <bits/stdc++.h>
using namespace std;
const long long maxn = 200000;
long long a[200005], pos[200005];
long long sum1[200005], sum2[200005];
void add(long long *sum1, long long x, long long val) {
  while (x <= maxn) {
    sum1[x] += val;
    x += x & (-x);
  }
}
long long sum(long long *sum1, long long pos) {
  long long res = 0;
  while (pos) {
    res += sum1[pos];
    pos -= pos & (-pos);
  }
  return res;
}
signed main() {
  long long n;
  cin >> n;
  for (long long i = 1; i <= n; i++) {
    cin >> a[i];
    pos[a[i]] = i;
  }
  long long ans1 = 0, ans2 = 0;
  for (long long i = 1; i <= n; i++) {
    ans1 += i - 1 - sum(sum1, pos[i]);
    add(sum1, pos[i], 1);
    add(sum2, pos[i], pos[i]);
    long long l = 1, r = n;
    while (l < r) {
      long long mid = l + r + 1 >> 1;
      if (sum(sum1, mid) * 2 <= i) {
        l = mid;
      } else
        r = mid - 1;
    }
    long long cnt = sum(sum1, l);
    long long sum3 = sum(sum2, l);
    ans2 = 0;
    ans2 += cnt * l - sum3 - cnt * (cnt - 1) / 2;
    cnt = i - cnt;
    sum3 = sum(sum2, n) - sum(sum2, l);
    ans2 += sum3 - cnt * (l + 1) - cnt * (cnt - 1) / 2;
    cout << ans1 + ans2 << " ";
  }
  cout << endl;
}

### Prompt

Your challenge is to write a CPP solution to the following problem:

You are given a permutation p_1, p_2, …, p_n.

In one move you can swap two adjacent values.

You want to perform a minimum number of moves, such that in the end there will exist a subsegment 1,2,…, k, in other words in the end there should be an integer i, 1 ≤ i ≤ n-k+1 such that p_i = 1, p_{i+1} = 2, …, p_{i+k-1}=k.

Let f(k) be the minimum number of moves that you need to make a subsegment with values 1,2,…,k appear in the permutation.

You need to find f(1), f(2), …, f(n).

Input

The first line of input contains one integer n (1 ≤ n ≤ 200 000): the number of elements in the permutation.

The next line of input contains n integers p_1, p_2, …, p_n: given permutation (1 ≤ p_i ≤ n).

Output

Print n integers, the minimum number of moves that you need to make a subsegment with values 1,2,…,k appear in the permutation, for k=1, 2, …, n.

Examples

Input


5
5 4 3 2 1


Output


0 1 3 6 10 


Input


3
1 2 3


Output


0 0 0 

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
const long long maxn = 200000;
long long a[200005], pos[200005];
long long sum1[200005], sum2[200005];
void add(long long *sum1, long long x, long long val) {
  while (x <= maxn) {
    sum1[x] += val;
    x += x & (-x);
  }
}
long long sum(long long *sum1, long long pos) {
  long long res = 0;
  while (pos) {
    res += sum1[pos];
    pos -= pos & (-pos);
  }
  return res;
}
signed main() {
  long long n;
  cin >> n;
  for (long long i = 1; i <= n; i++) {
    cin >> a[i];
    pos[a[i]] = i;
  }
  long long ans1 = 0, ans2 = 0;
  for (long long i = 1; i <= n; i++) {
    ans1 += i - 1 - sum(sum1, pos[i]);
    add(sum1, pos[i], 1);
    add(sum2, pos[i], pos[i]);
    long long l = 1, r = n;
    while (l < r) {
      long long mid = l + r + 1 >> 1;
      if (sum(sum1, mid) * 2 <= i) {
        l = mid;
      } else
        r = mid - 1;
    }
    long long cnt = sum(sum1, l);
    long long sum3 = sum(sum2, l);
    ans2 = 0;
    ans2 += cnt * l - sum3 - cnt * (cnt - 1) / 2;
    cnt = i - cnt;
    sum3 = sum(sum2, n) - sum(sum2, l);
    ans2 += sum3 - cnt * (l + 1) - cnt * (cnt - 1) / 2;
    cout << ans1 + ans2 << " ";
  }
  cout << endl;
}

```