#include <bits/stdc++.h>
using namespace std;
vector<int> a;
vector<int> ans;
int n;
int cols[100001];
int timestamp = 0;
static int get(const int k) {
  ++timestamp;
  int ans = 0;
  int sz = 0;
  for (int i = 1; i <= n; ++i) {
    int x = a[i];
    if (cols[x] != timestamp) {
      if (sz == k) {
        ++ans;
        ++timestamp;
        sz = 0;
      }
      cols[x] = timestamp;
      ++sz;
    }
  }
  if (sz) ++ans;
  return ans;
}
void solve(int l, int r) {
  if (l + 1 >= r) return;
  if (ans[l] == ans[r]) {
    for (int i = l + 1; i < r; i++) ans[i] = ans[l];
    return;
  }
  int mid = (l + r) / 2;
  ans[mid] = get(mid);
  solve(l, mid), solve(mid, r);
  return;
}
int main() {
  scanf("%d", &n);
  a.resize(n + 1);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  ans.resize(n + 1);
  ans[1] = get(1), ans[n] = 1;
  solve(1, n);
  for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  return 0;
}
