#include <bits/stdc++.h>
using namespace std;
const int BufferSize = 1 << 16;
char buffer[BufferSize], *Head, *Tail;
inline char Getchar() {
  if (Head == Tail) {
    int l = fread(buffer, 1, BufferSize, stdin);
    Tail = (Head = buffer) + l;
  }
  return *Head++;
}
int read() {
  int x = 0, f = 1;
  char c = Getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = Getchar();
  }
  while (isdigit(c)) {
    x = x * 10 + c - '0';
    c = Getchar();
  }
  return x * f;
}
int ToT, sumv[4000010], lc[4000010], rc[4000010];
void update(int& y, int x, int l, int r, int p) {
  sumv[y = ++ToT] = sumv[x] + 1;
  if (l == r) return;
  int mid = l + r >> 1;
  lc[y] = lc[x];
  rc[y] = rc[x];
  if (p <= mid)
    update(lc[y], lc[x], l, mid, p);
  else
    update(rc[y], rc[x], mid + 1, r, p);
  return;
}
int query(int o, int l, int r, int qr) {
  if (!o) return 0;
  if (r <= qr) return sumv[o];
  int mid = l + r >> 1, ans = query(lc[o], l, mid, qr);
  if (qr > mid) ans += query(rc[o], mid + 1, r, qr);
  return ans;
}
int n, rt[200010], A[200010], num[200010];
int main() {
  n = read();
  for (int i = 1; i <= n; i++) num[i] = A[i] = read();
  sort(num + 1, num + n + 1);
  for (int i = 1; i <= n; i++)
    A[i] = lower_bound(num + 1, num + n + 1, A[i]) - num;
  for (int i = 1; i <= n; i++) update(rt[i], rt[i - 1], 1, n, A[i]);
  for (int k = 1; k < n; k++) {
    int ans = 0;
    for (int i = 2, j = 1; i <= n; i += k, j++)
      ans += query(rt[min(i + k - 1, n)], 1, n, A[j] - 1) -
             query(rt[i - 1], 1, n, A[j] - 1);
    printf("%d%c", ans, k < n - 1 ? ' ' : '\n');
  }
  return 0;
}
