#include <bits/stdc++.h>
using namespace std;
map<int, int> P;
int A[100001], T[100001], V[100001 * 40], L[100001 * 40], R[100001 * 40], t;
void JR(int &h, int rh, int l, int r, int p, int x) {
  h = ++t, V[h] = V[rh] + x, L[h] = L[rh], R[h] = R[rh];
  if (l == r) return;
  int mid = l + r >> 1;
  if (p <= mid)
    JR(L[h], L[rh], l, mid, p, x);
  else
    JR(R[h], R[rh], mid + 1, r, p, x);
}
int CZ(int h, int l, int r, int x) {
  if (l == r) return l;
  int mid = l + r >> 1;
  if (x <= V[L[h]])
    return CZ(L[h], l, mid, x);
  else
    return CZ(R[h], mid + 1, r, x - V[L[h]]);
}
int main() {
  int a, i, b, w;
  cin >> a;
  for (i = 1; i <= a; i++) cin >> A[i];
  for (i = a; i >= 1; i--) {
    JR(T[i], T[i + 1], 1, a, i, 1);
    if (P[A[i]]) JR(T[i], T[i], 1, a, P[A[i]], -1);
    P[A[i]] = i;
  }
  for (i = 1; i <= a; i++) {
    b = 1, w = 0;
    while (b <= a) {
      if (V[T[b]] > i)
        b = CZ(T[b], 1, a, i + 1);
      else
        b = a + 1;
      w++;
    }
    cout << w << " ";
  }
}
