#include <bits/stdc++.h>
using namespace std;
const int MXN = 1e5 + 10;
int n, A[MXN], M[MXN], P[MXN];
int Solve(int k) {
  int c = 1, r = 1;
  for (int i = 1; i <= n; i++) M[i] = 0;
  M[A[0]] = r;
  for (int i = 1; i < n; i++) {
    if (M[A[i]] == r) continue;
    if (c < k)
      c++;
    else
      r++, c = 1;
    M[A[i]] = r;
  }
  return (r);
}
void Run(int l = 1, int r = n, int le = 1, int ri = n) {
  if (l > r) return;
  int mid = (l + r) / 2;
  if (le == ri)
    P[mid] = le;
  else
    P[mid] = Solve(mid);
  Run(l, mid - 1, P[mid], ri);
  Run(mid + 1, r, le, P[mid]);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &A[i]);
  Run();
  for (int i = 1; i <= n; i++) printf("%d ", P[i]);
  return (0);
}
