#include <bits/stdc++.h>
using namespace std;
struct ft {
  int n;
  vector<long long> t;
  ft(int sz) {
    n = sz;
    t = vector<long long>(n + 1);
  }
  void upd(int pos, long long val) {
    pos++;
    while (pos <= n) {
      t[pos] += val;
      pos += pos & (-pos);
    }
  }
  long long qry(int pos) {
    long long res = 0;
    while (pos) {
      res += t[pos];
      pos -= pos & (-pos);
    }
    return res;
  }
  long long qry(int l, int r) { return qry(r) - qry(l); }
};
long long help(long long x) { return x * (x + 1) / 2; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    --a[i];
  }
  ft fa(n);
  vector<int> add(n), at(n);
  for (int i = n - 1; i >= 0; i--) {
    add[a[i]] = fa.qry(a[i]);
    fa.upd(a[i], 1);
    at[a[i]] = i;
  }
  long long cl = 0, cr = 0;
  ft fb(n), fc(n);
  set<int> act;
  act.insert(at[0]);
  fb.upd(at[0], at[0]);
  fc.upd(at[0], 1);
  long long base = add[0];
  cout << base << ' ';
  auto it = act.begin();
  for (int i = 1, pos; i < n; i++) {
    act.insert(at[i]);
    if (at[i] < *it)
      cl++;
    else
      cr++;
    fb.upd(at[i], at[i]);
    fc.upd(at[i], 1);
    while (abs(cl - cr) > 1) {
      if (cl < cr) {
        it++;
        cl++;
        cr--;
      } else {
        it--;
        cl--;
        cr++;
      }
    }
    pos = *it;
    long long l, r, res;
    l = fc.qry(pos) * pos - fb.qry(pos) - help(fc.qry(pos));
    r = fb.qry(pos + 1, n) - fc.qry(pos + 1, n) * pos -
        help(fc.qry(pos + 1, n));
    res = l + r;
    if (cl < cr) {
      it++;
      cl++;
      cr--;
    } else if (cl > cr) {
      it--;
      cl--;
      cr++;
    }
    pos = *it;
    l = fc.qry(pos) * pos - fb.qry(pos) - help(fc.qry(pos));
    r = fb.qry(pos + 1, n) - fc.qry(pos + 1, n) * pos -
        help(fc.qry(pos + 1, n));
    res = min(res, l + r);
    base += add[i];
    cout << res + base << ' ';
  }
}
