#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
vector<pair<int, int>> vec;
int n;
int x;
int a[1 << 18];
int t[1 << 20];
long long ans[1 << 18];
void upd(int nod, int l, int r, int pos) {
  if (l == r) {
    t[nod] = 1;
    return;
  }
  int mid = l + r >> 1;
  if (pos <= mid)
    upd(nod << 1, l, mid, pos);
  else
    upd(nod << 1 | 1, mid + 1, r, pos);
  t[nod] = t[nod << 1] + t[nod << 1 | 1];
}
int qry(int nod, int tl, int tr, int l, int r) {
  if (l > r) return 0;
  if (l == tl && tr == r) return t[nod];
  int mid = tl + tr >> 1;
  return qry(nod << 1, tl, mid, l, min(mid, r)) +
         qry(nod << 1 | 1, mid + 1, tr, max(mid + 1, l), r);
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cerr.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x;
    vec.push_back(make_pair(x, i));
  }
  sort(vec.begin(), vec.end());
  for (auto it : vec) {
    for (int k = 1; k < n && k * (it.second - 1) + 2 <= n; k++) {
      ans[k] += qry(1, 1, n, max(1, k * (it.second - 1) + 2),
                    min(n, k * it.second + 1));
    }
    upd(1, 1, n, it.second);
  }
  for (int i = 1; i < n; i++) cout << ans[i] << ' ';
}
