#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, m, a[N], ans[N], bo[N];
inline void calc(int x) {
  ans[x] = 0;
  for (int i = 1, la = 1, num = 0; i <= n; ++i) {
    num += bo[a[i]] == 0;
    bo[a[i]] = 1;
    if (num > x) {
      num = 1;
      ++ans[x];
      for (int j = la; j < i; ++j) bo[a[j]] = 0;
      la = i;
    }
    if (i == n) {
      ++ans[x];
      for (int j = la; j <= i; ++j) bo[a[j]] = 0;
      la = i;
    }
  }
}
inline void solve(int l, int r) {
  if (r - l <= 1) return;
  int mid = (l + r) >> 1;
  calc(mid);
  if (ans[l] == ans[mid])
    for (int i = l + 1; i < mid; ++i) ans[i] = ans[l];
  else
    solve(l, mid);
  if (ans[mid] == ans[r])
    for (int i = mid + 1; i < r; ++i) ans[i] = ans[r];
  else
    solve(mid, r);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
  calc(1);
  calc(n);
  solve(1, n);
  for (int i = 1; i <= n; ++i) printf("%d ", ans[i]);
  printf("\n");
  return 0;
}
