#include <bits/stdc++.h>
using namespace std;
int mg[100005], p[100005], res[100005], novi, n;
void izracunaj(int k) {
  int i, t = 0;
  novi++;
  res[k] = 1;
  for (i = 1; i <= n; i++) {
    if (p[mg[i]] != novi) {
      t++;
      p[mg[i]] = novi;
    }
    if (t > k) {
      t = 1;
      res[k]++;
      novi++;
      p[mg[i]] = novi;
    }
  }
}
void resi(int l, int d) {
  if (res[l] == res[d]) {
    for (int i = l + 1; i < d; i++) res[i] = res[l];
  } else {
    int s = (l + d) / 2;
    izracunaj(s);
    izracunaj(s + 1);
    resi(l, s);
    resi(s + 1, d);
  }
}
int main() {
  int i, j;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> mg[i];
  novi = 1;
  izracunaj(1);
  izracunaj(n);
  resi(1, n);
  for (i = 1; i <= n; i++) cout << res[i] << " ";
  return 0;
}
