#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
const int SQRT = 320;
int n, m, a[MAXN], cnt[MAXN];
int vn = 0, vis[MAXN] = {0};
int num = 0, st[SQRT], sum[SQRT] = {0};
int cnt2[SQRT][MAXN] = {0};
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  m = sqrt(n);
  for (int i = 1; i < m; ++i) {
    int ans = 1, now = 0;
    ++vn;
    for (int j = 1; j <= n; ++j) {
      if (now == i && (vis[a[j]] != vn || !cnt[a[j]])) ++vn, ++ans, now = 0;
      if (vis[a[j]] != vn) vis[a[j]] = vn, cnt[a[j]] = 0;
      now += !cnt[a[j]]++;
    }
    cout << ans << " ";
  }
  memset(cnt, 0, sizeof cnt);
  st[++num] = 1;
  for (int i = 1; i <= n; ++i) {
    if (sum[num] == m && !cnt2[num][a[i]]) st[++num] = i;
    sum[num] += !cnt2[num][a[i]]++;
  }
  cout << num;
  for (int i = m + 1; i <= n; ++i) {
    for (int j = 1; j < num; ++j) {
      while (st[j + 1] <= st[j] ||
             st[j + 1] <= n && (sum[j] < i || cnt2[j][a[st[j + 1]]])) {
        sum[j] += !cnt2[j][a[st[j + 1]]]++;
        sum[j + 1] -= !--cnt2[j + 1][a[st[j + 1]]];
        ++st[j + 1];
      }
      if (st[j + 1] > n) {
        num = j;
        break;
      }
    }
    cout << " " << num;
  }
  cout << endl;
  return 0;
}
