#include <bits/stdc++.h>
using namespace std;
using namespace std;
const int maxn = 1e5 + 1;
int n;
int a[maxn];
int ans[maxn];
bool vis[maxn];
int solve(int k) {
  int ret = 1;
  memset(vis, 0, sizeof(vis));
  int tot = 0;
  int last = 0;
  for (int i = 0; i < n; ++i) {
    if (vis[a[i]] == 0) tot += 1, vis[a[i]] = true;
    ;
    if (tot == k + 1) {
      ret += 1;
      for (int j = last; j < i; ++j) vis[a[j]] = 0;
      last = i;
      tot = 1;
    }
  }
  return ret;
}
void divide(int l, int r) {
  if (r - l < 2) return;
  if (ans[l] == ans[r]) {
    for (int i = l + 1; i < r; ++i) ans[i] = ans[l];
    return;
  }
  int mid = (l + r) >> 1;
  ans[mid] = solve(mid);
  divide(l, mid);
  divide(mid, r);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  for (long long(i) = (0); (i) < (n); ++(i)) cin >> a[i];
  memset(ans, -1, sizeof(ans));
  ans[1] = solve(1);
  ans[n] = solve(n);
  divide(1, n);
  for (long long(i) = (1); (i) <= (n); ++(i)) cout << ans[i] << " ";
  cout << '\n';
}
