#include <bits/stdc++.h>
using namespace std;
template <class T>
using vv = vector<vector<T>>;
template <class T>
ostream &operator<<(ostream &os, const vector<T> &t) {
  os << "{";
  for (int(i) = 0; (i) < (t.size()); ++(i)) {
    os << t[i] << ",";
  }
  os << "}" << endl;
  return os;
}
template <class S, class T>
ostream &operator<<(ostream &os, const pair<S, T> &t) {
  return os << "(" << t.first << "," << t.second << ")";
}
const int nn = 212345;
int bit[nn + 1];
int sum(int i) {
  ++i;
  i = min(i, nn);
  int s = 0;
  while (i > 0) {
    s += bit[i];
    i -= i & -i;
  }
  return s;
}
void add(int i, int x) {
  ++i;
  while (i <= nn) {
    bit[i] += x;
    i += i & -i;
  }
}
const int sq = 500;
int main() {
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(0);
  int i, j, k;
  int n;
  scanf("%d", &n);
  vector<pair<int, int>> v(n);
  vector<int> re(n), re2(212345);
  for (int(i) = 0; (i) < (n); ++(i)) {
    scanf("%d", &v[i].first);
    v[i].second = i;
  }
  sort((v).begin(), (v).end());
  for (int(i) = 0; (i) < (n); ++(i)) {
    for ((k) = 0; (k) < (sq); ++(k))
      if (k) {
        if (k >= n) break;
        re[k] += sum((v[i].second + 1) * k) - sum(k * v[i].second);
      }
    if (v[i].second < sq)
      for (; (k) < (n); ++(k)) {
        re[k] += sum((v[i].second + 1) * k) - sum(k * v[i].second);
      }
    add(v[i].second, 1);
  }
  for (int(i) = 0; (i) < (n); ++(i))
    if (i) printf("%d ", re[i]);
  printf("\n");
  return 0;
}
