#include <bits/stdc++.h>
using namespace std;
int n;
int a[100007], ans[100007], vis[100007];
int count(int x) {
  int cnt = 0, now = 0;
  memset(vis, 255, sizeof(vis));
  for (int i = 1; i <= n; i++) {
    if (vis[a[i]] == now) continue;
    vis[a[i]] = now;
    if (++cnt > x) {
      cnt = 1;
      vis[a[i]] = ++now;
    }
  }
  return now + 1;
}
void work(int l, int r) {
  if (l > r) return;
  int cnt1 = count(l), cnt2 = count(r);
  if (cnt1 == cnt2) {
    for (int i = l; i <= r; i++) ans[i] = cnt1;
    return;
  }
  ans[l] = cnt1;
  ans[r] = cnt2;
  int mid = (l + r) >> 1;
  work(l + 1, mid);
  work(mid + 1, r - 1);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  work(1, n);
  for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  return 0;
}
