#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int cnt[N];
int dp[N];
int a[N];
int n;
int calc(int k) {
  memset(cnt, 0, sizeof cnt);
  int ret = 0;
  int start = 0;
  int diff = 0;
  for (int i = 0; i < n; i++) {
    cnt[a[i]]++;
    if (cnt[a[i]] == 1) diff++;
    if (diff > k) {
      ret++;
      for (int j = start; j < i; j++) {
        cnt[a[j]]--;
        if (cnt[a[j]] == 0) diff--;
      }
      start = i;
    }
  }
  return ret + 1;
}
void solve(int l, int r) {
  if (l + 1 == r) return;
  if (dp[l] == dp[r]) {
    for (int i = l + 1; i < r; i++) {
      dp[i] = dp[r];
    }
    return;
  }
  int mid = (l + r) / 2;
  dp[mid] = calc(mid);
  solve(l, mid);
  solve(mid, r);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  dp[1] = calc(1);
  dp[n] = calc(n);
  solve(1, n);
  for (int i = 1; i <= n; i++) {
    cout << dp[i] << " ";
  }
  cout << "\n";
  return 0;
}
