#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &F) {
  F = 0;
  int R = 1;
  char CH = getchar();
  for (; !isdigit(CH); CH = getchar())
    if (CH == '-') R = -1;
  for (; isdigit(CH); CH = getchar()) F = F * 10 + CH - 48;
  F *= R;
}
const int N = 1000005;
int n, d[2], pre[N][2];
int main() {
  int n;
  string st;
  cin >> n >> st;
  d[0] = d[1] = -1;
  for (int i = 0; i < st.size(); i++) {
    if (st[i] != '?') {
      d[st[i] - '0'] = i;
      pre[i][st[i] & 1 ^ 1] = i;
      pre[i][st[i] - '0'] = d[st[i] & 1 ^ 1] + 1;
    } else
      pre[i][0] = d[1] + 1, pre[i][1] = d[0] + 1;
  }
  for (int len = 1; len <= n; len++) {
    int pos = 0, ans = 0;
    while (pos + len - 1 < n) {
      if (pre[pos + len - 1][0] == pre[pos][0] ||
          pre[pos + len - 1][1] == pre[pos][1])
        pos += len, ans++;
      else
        pos = pre[pos + len - 1][pre[pos + len - 1][1] < pre[pos + len - 1][0]];
    }
    printf("%d ", ans);
  }
  return 0;
}
