#pragma GCC optimize("Ofast,unroll-loops") #include using namespace std; constexpr int MX = 1000000; int n; int a[MX]; bool vis[MX]; int calc(int k) { int pre = 0; int res = 0; int distinct = k; for (int i = 0; i < n; i++) { if (not vis[a[i]]) { if (distinct == k) { res++; for (int j = pre; j < i; j++) vis[a[j]] = false; distinct = 1; pre = i; } else { distinct++; } vis[a[i]] = true; } } for (int i = pre; i < n; i++) vis[a[i]] = false; return res; } int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; a[i]--; } for (int i = 1; i <= n; i++) cout << calc(i) << "\n"; }