#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 7;
int a[maxn];
class BIT {
 public:
  long long a[maxn];
  void add(int x, long long c) {
    for (int i = x; i < maxn; i += i & -i) a[i] += c;
  }
  long long sum(int x) {
    long long res = 0;
    for (int i = x; i > 0; i -= i & -i) res += a[i];
    return res;
  }
} b1, b2;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, x;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x;
    a[x] = i;
  }
  long long inv = 0;
  for (int i = 1; i <= n; i++) {
    b1.add(a[i], 1);
    inv += i - b1.sum(a[i]);
    b2.add(a[i], a[i]);
    x = i / 2 + 1;
    long long res = b2.sum(n);
    int l = 1, r = n;
    while (l < r) {
      int mid = (l + r) >> 1;
      if (b1.sum(mid) >= x)
        r = mid;
      else
        l = mid + 1;
    }
    long long pos = l;
    long long s = b2.sum(pos);
    long long lans = pos * (pos + 1) / 2 - s - (pos - x) * (pos - x + 1) / 2;
    long long rans = res - s - (i - x) * (pos + 1 + i - x + pos) / 2;
    cout << lans + rans + inv << ' ';
  }
  cout << endl;
  return 0;
}

### Prompt

Generate 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 int maxn = 2e5 + 7;
int a[maxn];
class BIT {
 public:
  long long a[maxn];
  void add(int x, long long c) {
    for (int i = x; i < maxn; i += i & -i) a[i] += c;
  }
  long long sum(int x) {
    long long res = 0;
    for (int i = x; i > 0; i -= i & -i) res += a[i];
    return res;
  }
} b1, b2;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, x;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x;
    a[x] = i;
  }
  long long inv = 0;
  for (int i = 1; i <= n; i++) {
    b1.add(a[i], 1);
    inv += i - b1.sum(a[i]);
    b2.add(a[i], a[i]);
    x = i / 2 + 1;
    long long res = b2.sum(n);
    int l = 1, r = n;
    while (l < r) {
      int mid = (l + r) >> 1;
      if (b1.sum(mid) >= x)
        r = mid;
      else
        l = mid + 1;
    }
    long long pos = l;
    long long s = b2.sum(pos);
    long long lans = pos * (pos + 1) / 2 - s - (pos - x) * (pos - x + 1) / 2;
    long long rans = res - s - (i - x) * (pos + 1 + i - x + pos) / 2;
    cout << lans + rans + inv << ' ';
  }
  cout << endl;
  return 0;
}

```