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 
#include <bits/stdc++.h>
using namespace std;
struct fenwick {
  int N;
  vector<int> bit;
  fenwick(int n = 1e5) {
    N = n + 5;
    bit.assign(N, 0);
  }
  void resize(int n) {
    N = n + 5;
    bit.assign(N, 0);
  }
  void update(int x, int val) {
    while (x < N) {
      bit[x] += val;
      x += x & -x;
    }
  }
  int sum(int x) {
    int ret = 0;
    while (x > 0) {
      ret += bit[x];
      x -= x & -x;
    }
    return ret;
  }
};
int main() {
  ios_base::sync_with_stdio(0);
  cout.tie(0);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> idx(n + 5);
  for (int i = 1; i <= n; ++i) {
    int x;
    cin >> x;
    idx[x] = i;
  }
  fenwick bit(n);
  set<long long, greater<long long>> l;
  set<long long> r;
  long long lsum = 0, rsum = 0, ans = 0;
  for (int i = 1; i <= n; ++i) {
    bit.update(idx[i], 1);
    ans += i - bit.sum(idx[i]);
    if (l.size() == 0 || idx[i] < *l.begin())
      l.insert(idx[i]), lsum += idx[i];
    else
      r.insert(idx[i]), rsum += idx[i];
    if (l.size() > r.size() + 1) {
      int x = *l.begin();
      lsum -= x;
      rsum += x;
      l.erase(l.begin());
      r.insert(x);
    } else if (r.size() > l.size()) {
      int x = *r.begin();
      lsum += x;
      rsum -= x;
      l.insert(x);
      r.erase(r.begin());
    }
    long long lcnt = (l.size() * (*l.begin())) - lsum -
                     (1ll * l.size() * (l.size() - 1)) / 2;
    long long rcnt = (rsum - r.size() * (*l.begin())) -
                     (1ll * r.size() * (r.size() + 1)) / 2;
    cout << ans + lcnt + rcnt << ' ';
  }
}
