#include <bits/stdc++.h>
using namespace std;
int n, size;
int a[100005], ans[100005] = {0};
int cnt[355][100005], id = 0, colorcnt[355], pter[355];
int vis[100005];
int main() {
  ios::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  for (int i = 1; i * i <= n; ++i) {
    id++;
    int tans = 0, num = 0;
    for (int j = 1; j <= n; ++j)
      if (vis[a[j]] != id) {
        vis[a[j]] = id;
        num++;
        if (num > i) {
          tans++;
          id++;
          num = 1;
          vis[a[j]] = id;
        }
      }
    if (num) tans++;
    ans[i] = tans;
  }
  int tmp = 1, st = (int(sqrt(n)) + 1);
  for (int i = 1; i <= n; ++i) {
    if (!cnt[tmp][a[i]] && colorcnt[tmp] == st) pter[tmp] = i, tmp++;
    cnt[tmp][a[i]]++;
    if (cnt[tmp][a[i]] == 1) colorcnt[tmp]++;
  }
  pter[tmp] = n + 1;
  ans[st] = tmp;
  for (int i = st + 1; i <= n; ++i) {
    for (int j = 1; j <= tmp; ++j) {
      while (pter[j] <= n) {
        if (!cnt[j][a[pter[j]]] && colorcnt[j] == i) break;
        cnt[j][a[pter[j]]]++, cnt[j + 1][a[pter[j]]]--;
        if (!cnt[j + 1][a[pter[j]]]) colorcnt[j + 1]--;
        if (cnt[j][a[pter[j]]] == 1) colorcnt[j]++;
        pter[j]++;
      }
    }
    while (tmp > 1 && pter[tmp - 1] > n) tmp--;
    ans[i] = tmp;
  }
  for (int i = 1; i <= n; ++i) cout << ans[i] << " ";
  return 0;
}
