#include <bits/stdc++.h>
using namespace std;
int n, ans;
char s[1000010];
int f[1000010][2], g[1000010][2];
int main() {
  scanf("%d%s", &n, s + 1);
  for (int i = 1; i <= n; i++) {
    if (s[i] == '0')
      f[i][0] = f[i - 1][0] + 1, f[i][1] = 0;
    else if (s[i] == '1')
      f[i][0] = 0, f[i][1] = f[i - 1][1] + 1;
    else
      f[i][0] = f[i - 1][0] + 1, f[i][1] = f[i - 1][1] + 1;
  }
  g[n + 1][0] = g[n + 1][1] = 0;
  for (int i = n; i; i--) {
    if (s[i] == '0')
      g[i][0] = g[i + 1][0] + 1, g[i][1] = 0;
    else if (s[i] == '1')
      g[i][0] = 0, g[i][1] = g[i + 1][1] + 1;
    else
      g[i][0] = g[i + 1][0] + 1, g[i][1] = g[i + 1][1] + 1;
  }
  for (int i = 1; i <= n; i++) {
    int ans = 0, last = 0;
    for (int j = 1; j <= n; j += i) {
      int x = max(last, j - f[j][0]), y = max(last, j - f[j][1]);
      bool a = g[j][0] - 1 + j - x >= i, b = g[j][1] - 1 + j - y >= i;
      ans += a || b;
      if (a && b)
        last = min(x, y) + i;
      else if (a)
        last = x + i;
      else if (b)
        last = y + i;
    }
    printf("%d ", ans);
  }
  return 0;
}
