#include <bits/stdc++.h>
int a[100005];
int v[100005], mv[100005];
int S[405][100005];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) {
    mv[i] = v[a[i]];
    v[a[i]] = i;
  }
  for (int i = 1; i <= n; i++) S[i / 300][mv[i]]++;
  for (int i = 0; i <= n / 300; i++)
    for (int j = 1; j <= n; j++) S[i][j] += S[i][j - 1];
  for (int k = 1; k <= n; k++) {
    int ans = 1;
    if (k < 300) {
      memset(v, -1, sizeof(v));
      int cnt = 0;
      for (int i = 1; i <= n; i++) {
        if (v[a[i]] == ans) continue;
        if (cnt == k) {
          ans++;
          v[a[i]] = ans;
          cnt = 1;
        } else {
          v[a[i]] = ans;
          cnt++;
        }
      }
    } else {
      int s = 1, i = 1, cnt = 0;
      while (i <= n) {
        if (i % 300 == 0 && i + 300 - 1 <= n) {
          if (S[i / 300][s - 1] + cnt <= k) {
            cnt += S[i / 300][s - 1];
            i += 300;
            continue;
          }
        }
        if (mv[i] < s) {
          if (cnt == k) {
            ans++;
            cnt = 1;
            s = i;
          } else {
            cnt++;
          }
        }
        i++;
      }
    }
    printf("%d ", ans);
  }
  return 0;
}
