cin >> n >> s + 1; init_fa(n + 1); for (int i = n; i; --i) { r[i][0] = r[i + 1][0] + 1; r[i][1] = r[i + 1][1] + 1; if (s[i] == '?') continue; r[i][s[i] - '0' ^ 1] = 0; } for (int i = 1; i <= n; ++i) a[max(r[i][0], r[i][1])].push_back(i); for (int l = 1; l <= n; ++l) { int p = 1, ans = 0; while (p <= n) { p = find(p); if (p > n) break; ++ans; p += l; } cout << ans << " "; for (auto t : a[l]) fa[t] = t + 1; } return0; }