#include <bits/stdc++.h>
using namespace std;
const int SZ = 2e5 + 5;
int n, a[SZ];
long long tree[SZ << 2], lazy[SZ << 2], tree2[SZ << 2], rev[SZ], ans;
void update2(int si, int ei, int pl, int val, int ind) {
  if (si > pl || ei < pl) return;
  if (si == ei) {
    tree2[ind] = val;
    return;
  }
  int mi = si + ei >> 1;
  update2(si, mi, pl, val, ind << 1);
  update2(mi + 1, ei, pl, val, ind << 1 | 1);
  tree2[ind] = tree2[ind << 1] + tree2[ind << 1 | 1];
}
long long get_sum2(int si, int ei, int s, int e, int ind) {
  if (si > e || ei < s) return 0;
  if (si >= s && ei <= e) return tree2[ind];
  int mi = si + ei >> 1;
  return get_sum2(si, mi, s, e, ind << 1) +
         get_sum2(mi + 1, ei, s, e, ind << 1 | 1);
}
void update_lazy(int ind, int si, int ei) {
  if (!lazy[ind]) return;
  tree[ind] += lazy[ind] * get_sum2(1, n, si, ei, 1);
  if (si != ei) {
    lazy[ind << 1] += lazy[ind];
    lazy[ind << 1 | 1] += lazy[ind];
  }
  lazy[ind] = 0;
}
void update_zero(int si, int ei, int pl, int ind) {
  update_lazy(ind, si, ei);
  if (si > pl || ei < pl) return;
  if (si == ei) {
    tree[ind] = 0;
    return;
  }
  int mi = si + ei >> 1;
  update_zero(si, mi, pl, ind << 1);
  update_zero(mi + 1, ei, pl, ind << 1 | 1);
  tree[ind] = tree[ind << 1] + tree[ind << 1 | 1];
}
void update(int si, int ei, int s, int e, int val, int ind) {
  update_lazy(ind, si, ei);
  if (si > e || ei < s) return;
  if (si >= s && ei <= e) {
    lazy[ind] += val;
    update_lazy(ind, si, ei);
    return;
  }
  int mi = si + ei >> 1;
  update(si, mi, s, e, val, ind << 1);
  update(mi + 1, ei, s, e, val, ind << 1 | 1);
  tree[ind] = tree[ind << 1] + tree[ind << 1 | 1];
}
long long get_sum(int si, int ei, int s, int e, int ind) {
  update_lazy(ind, si, ei);
  if (si > e || ei < s) return 0;
  if (si >= s && ei <= e) return tree[ind];
  int mi = si + ei >> 1;
  return get_sum(si, mi, s, e, ind << 1) +
         get_sum(mi + 1, ei, s, e, ind << 1 | 1);
}
int main() {
  int i, pl, si, ei;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", a + i);
    rev[a[i]] = i;
    update2(1, n, i, 1, 1);
  }
  for (i = 1; i <= n; i++) {
    update2(1, n, rev[i], 0, 1);
    ans += (n - rev[i]) - get_sum2(1, n, rev[i] + 1, n, 1);
    update(1, n, rev[i] + 1, n, 1, 1);
    update_zero(1, n, rev[i], 1);
    si = 1, ei = n;
    pl = n;
    while (si <= ei) {
      int mi = si + ei >> 1;
      long long sum = mi - get_sum2(1, n, 1, mi, 1);
      if (sum >= (i + 1) / 2) {
        pl = min(pl, mi);
        ei = mi - 1;
      } else
        si = mi + 1;
    }
    printf("%lld ", ans + get_sum(1, n, 1, pl - 1, 1) +
                        i * get_sum2(1, n, pl + 1, n, 1) -
                        get_sum(1, n, pl + 1, n, 1));
  }
  printf("\n");
  return 0;
}
