#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n;
char s[N];
int pre[N][2], nxt[N][2], last[2];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> (s + 1);
  last[0] = last[1] = 0;
  for (int i = 1; i <= n; i++) {
    if (s[i] != '?') last[s[i] - '0'] = i;
    pre[i][0] = last[0];
    pre[i][1] = last[1];
  }
  last[0] = last[1] = n + 1;
  for (int i = n; i >= 1; i--) {
    if (s[i] != '?') last[s[i] - '0'] = i;
    nxt[i][0] = last[0];
    nxt[i][1] = last[1];
  }
  for (int i = 1; i <= n; i++) {
    int lastPos = 0, res = 0;
    for (int p = i; p <= n; p += i) {
      int best = N;
      for (int c = 0; c <= 1; c++) {
        int l = max(lastPos, pre[p][c]);
        int r = min(n, nxt[p][c] - 1);
        if (r - l >= i) best = min(best, l + i);
      }
      if (best != N) {
        res++;
        lastPos = best;
      }
    }
    cout << res << ' ';
  }
  return 0;
}
