#include <bits/stdc++.h>
using namespace std;
mt19937 gen(time(NULL));
const long double eps = 1e-9;
const int inf = 1e9;
const int mod = 1e9 + 7;
const long long infinity = 2 * 1e18;
int w[100005], n;
long long dp[100005], x = 0;
int ans[100005];
int brute(int k) {
  int total = 0;
  for (int i = 0; i < n;) {
    x++;
    int sz = 0, j = 0;
    for (; j + i < n; j++)
      if (dp[w[j + i]] < x) {
        sz++;
        if (sz > k) {
          j--;
          break;
        }
        dp[w[j + i]] = x;
      }
    total++;
    i += (j + 1);
  }
  return total;
}
void dq(int l, int r, int L, int R) {
  if (l == r) return void(ans[l] = (L == R) ? L : brute(l));
  int m = (l + r) / 2;
  ans[m] = (L == R) ? L : brute(m);
  if (l < m) dq(l, m - 1, ans[m], R);
  if (m < r) dq(m + 1, r, L, ans[m]);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> w[i];
  dq(1, n, 1, n);
  for (int i = 1; i <= n; i++) cout << ans[i] << " ";
}
