#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 228;
const int big = 2e9;
const int md = 1e9 + 7;
struct node {
  int l, r, s;
};
int n, m, a[N], pr[N], root[N], k, tex, jj;
node t[N * 40];
bool ok;
void build(int v, int l, int r) {
  if (l == r) return;
  t[v].l = ++k;
  t[v].r = ++k;
  int d = (l + r) >> 1;
  build(t[v].l, l, d);
  build(t[v].r, d + 1, r);
}
void update(int v, int l, int r, int ps, int vl) {
  if (l == r) {
    t[++k].s = vl;
    return;
  }
  int d = (l + r) >> 1;
  if (ps <= d) {
    update(t[v].l, l, d, ps, vl);
    t[++k].l = k - 1;
    t[k].r = t[v].r;
  } else {
    update(t[v].r, d + 1, r, ps, vl);
    t[++k].r = k - 1;
    t[k].l = t[v].l;
  }
  t[k].s = t[t[k].l].s + t[t[k].r].s;
}
void mod(int v, int l, int r, int ps, int vl) {
  if (l == r) {
    t[v].s = vl;
    return;
  }
  int d = (l + r) >> 1;
  if (ps <= d)
    mod(t[v].l, l, d, ps, vl);
  else
    mod(t[v].r, d + 1, r, ps, vl);
  t[v].s = t[t[v].l].s + t[t[v].r].s;
}
int go(int v, int l, int r) {
  if (l == r) return l;
  int d = (l + r) >> 1;
  if (t[t[v].l].s >= tex)
    return go(t[v].l, l, d);
  else {
    tex -= t[t[v].l].s;
    return go(t[v].r, d + 1, r);
  }
}
void nx(int v, int tl, int tr, int l, int r) {
  if (l > r || ok) return;
  if (tl == l && tr == r) {
    if (tex <= t[v].s) {
      ok = 1;
      jj = go(v, l, r);
    } else
      tex -= t[v].s;
    return;
  }
  int d = (tl + tr) >> 1;
  nx(t[v].l, tl, d, l, min(r, d));
  nx(t[v].r, d + 1, tr, max(l, d + 1), r);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  k = 1;
  root[n + 1] = 1;
  build(1, 1, n);
  for (int i = n; i >= 1; i--) {
    update(root[i + 1], 1, n, i, 1);
    if (pr[a[i]] != 0) update(k, 1, n, pr[a[i]], 0);
    root[i] = k;
    pr[a[i]] = i;
  }
  for (int i = 1; i <= n; i++) {
    int j = 1, ans = 0;
    ok = 1;
    while (j <= n && ok) {
      ans++;
      tex = i + 1;
      ok = 0;
      nx(root[j], 1, n, j, n);
      j = jj;
    }
    cout << ans << " ";
  }
  return 0;
}
