#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e5 + 10;
deque<int> dq[N];
int n, a[N];
struct node {
  int l, r, sum;
  node *left, *right;
  node(){};
  node(int l, int r, node *left = NULL, node *right = NULL, int sum = 0)
      : l(l), r(r), left(left), right(right), sum(sum){};
  void invalidate(int pos, int val) {
    if (l > pos || pos > r) return;
    if (l <= pos && pos <= r) sum += val;
    if (l != r) {
      left->invalidate(pos, val);
      right->invalidate(pos, val);
    }
  }
  void update(node *root, int pos, int val) {
    sum = root->sum + val;
    if (l == r) return;
    int mid = l + r >> 1;
    if (pos <= mid)
      left = new node(l, mid), right = root->right,
      left->update(root->left, pos, val);
    if (pos > mid)
      right = new node(mid + 1, r), left = root->left,
      right->update(root->right, pos, val);
  }
  int get(int i, int j) {
    if (i > r || j < l) return 0;
    if (i <= l && r <= j) return sum;
    return left->get(i, j) + right->get(i, j);
  }
  int find_where(int S) {
    if (l == r) {
      if (sum > S) return -1;
      return l;
    }
    if (left->sum <= S) return max(left->r, right->find_where(S - left->sum));
    return left->find_where(S);
  }
} * version[N];
node *build(int l, int r) {
  if (l == r) return new node(l, r);
  int mid = l + r >> 1;
  return new node(l, r, build(l, mid), build(mid + 1, r));
}
void Enter() {
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i], dq[a[i]].push_back(i);
}
void Solve() {
  version[1] = build(1, n);
  for (int i = 1; i <= n; ++i) version[1]->invalidate(i, !(dq[a[i]][0] < i));
  for (int i = 2; i <= n; ++i) {
    dq[a[i - 1]].pop_front();
    node *p = new node(1, n);
    p->update(version[i - 1], i - 1, -1);
    version[i] = new node(1, n);
    if (!dq[a[i - 1]].empty())
      version[i]->update(p, dq[a[i - 1]][0], 1);
    else
      version[i] = p;
  }
  for (int i = 1; i <= n; ++i) {
    int cnt = 0, j = 0;
    while (j < n) {
      j++;
      j = version[j]->find_where(i);
      cnt++;
    }
    cout << cnt << " ";
  };
}
int main() {
  ios ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  Enter();
  Solve();
  return 0;
}
