#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[100005];
int c[100005];
int ans[100005];
int solve(int x) {
  int rt = 0, ans = 0;
  int ls = 0;
  memset(c, 0, sizeof(c));
  for (int i = 1; i <= n; i++) {
    c[a[i]]++;
    if (c[a[i]] == 1) {
      rt++;
    }
    if (rt > x) {
      i--;
      for (int j = ls; j <= i + 1; j++) c[a[j]]--;
      rt = 0;
      ls = i + 1;
      ans++;
    }
  }
  ans++;
  return ans;
}
void er(int l, int r) {
  int sl = solve(l), sr = solve(r);
  if (sl == sr) {
    for (int j = l; j <= r; j++) ans[j] = sl;
  } else {
    int mid = (l + r) >> 1;
    er(l, mid);
    er(mid + 1, r);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  int o = 0;
  for (int i = 1; i * i <= n * log2(n); i++) {
    o = i;
    ans[i] = solve(i);
  }
  er(o + 1, n);
  for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  return 0;
}
